Function: pascal-end-of-statement
pascal-end-of-statement is an interactive and byte-compiled function
defined in pascal.el.gz.
Signature
(pascal-end-of-statement)
Documentation
Move forward to end of current statement.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/pascal.el.gz
(defun pascal-end-of-statement ()
"Move forward to end of current statement."
(interactive)
(let ((parse-sexp-ignore-comments t)
(nest 0) pos
(regexp (concat "\\(" pascal-beg-block-re "\\)\\|\\("
pascal-end-block-re "\\)")))
(if (not (looking-at "[ \t\n]")) (forward-sexp -1))
(or (looking-at pascal-beg-block-re)
;; Skip to end of statement
(setq pos (catch 'found
(while t
(forward-sexp 1)
(cond ((looking-at "[ \t]*;")
(skip-chars-forward "^;")
(forward-char 1)
(throw 'found (point)))
((save-excursion
(forward-sexp -1)
(looking-at pascal-beg-block-re))
(goto-char (match-beginning 0))
(throw 'found nil))
((eobp)
(throw 'found (point))))))))
(if (not pos)
;; Skip a whole block
(catch 'found
(while t
(re-search-forward regexp nil 'move)
(setq nest (if (match-end 1)
(1+ nest)
(1- nest)))
(cond ((eobp)
(throw 'found (point)))
((= 0 nest)
(throw 'found (pascal-end-of-statement))))))
pos)))