Function: pascal-end-of-defun
pascal-end-of-defun is an interactive and byte-compiled function
defined in pascal.el.gz.
Signature
(pascal-end-of-defun)
Documentation
Move forward to the end of the current function or procedure.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/pascal.el.gz
(defun pascal-end-of-defun ()
"Move forward to the end of the current function or procedure."
(interactive)
(if (looking-at "\\s ")
(forward-sexp 1))
(if (not (looking-at pascal-defun-re))
(pascal-beg-of-defun))
(forward-char 1)
(let ((nest 0) (func 1)
(reg (concat pascal-beg-block-re "\\|"
pascal-end-block-re "\\|"
pascal-defun-re)))
(while (and (/= func 0)
(re-search-forward reg nil 'move))
(cond ((let ((state (save-excursion
(parse-partial-sexp (point-min) (point)))))
(or (nth 3 state) (nth 4 state))) ; Inside string or comment
())
((match-end 1)
(setq nest (1+ nest))
(if (save-excursion
(goto-char (match-beginning 0))
(looking-at "\\<record\\>"))
(setq func (1+ func))))
((match-end 2)
(setq nest (1- nest))
(if (= nest 0)
(setq func (1- func))))
((match-end 3)
(setq func (1+ func))))))
(forward-line 1))