Function: perl-end-of-function
perl-end-of-function is an interactive and byte-compiled function
defined in perl-mode.el.gz.
Signature
(perl-end-of-function &optional ARG)
Documentation
Move forward to next end-of-function.
The end of a function is found by moving forward from the beginning of one. With argument, repeat that many times; negative args move backward.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/perl-mode.el.gz
;; note: this routine is adapted directly from emacs lisp.el, end-of-defun;
;; no bugs have been removed :-)
(defun perl-end-of-function (&optional arg)
"Move forward to next end-of-function.
The end of a function is found by moving forward from the beginning of one.
With argument, repeat that many times; negative args move backward."
(interactive "p")
(or arg (setq arg 1))
(let ((first t))
(while (and (> arg 0) (< (point) (point-max)))
(let ((pos (point)))
(while (progn
(if (and first
(progn
(forward-char 1)
(perl-beginning-of-function 1)
(not (bobp))))
nil
(or (bobp) (forward-char -1))
(perl-beginning-of-function -1))
(setq first nil)
(forward-list 1)
(skip-chars-forward " \t")
(if (looking-at "[#\n]")
(forward-line 1))
(<= (point) pos))))
(setq arg (1- arg)))
(while (< arg 0)
(let ((pos (point)))
(perl-beginning-of-function 1)
(forward-sexp 1)
(forward-line 1)
(if (>= (point) pos)
(if (progn (perl-beginning-of-function 2) (not (bobp)))
(progn
(forward-list 1)
(skip-chars-forward " \t")
(if (looking-at "[#\n]")
(forward-line 1)))
(goto-char (point-min)))))
(setq arg (1+ arg)))))