diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2012-04-21 17:53:32 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2012-04-21 17:53:32 -0700 |
commit | bbd347f5f7e99da1a559dad818b5fa8f59c0901e (patch) | |
tree | 77c1fc54c2240b08d2859109d18cac8812a8ffb1 /lisp/emacs-lisp/lisp.el | |
parent | e4ecdc9c71af4199129d5dd2db1a32ff6b725fe4 (diff) | |
parent | 9ee7d8b93cb143b473e6dffb708e777bc6fe5bd0 (diff) | |
download | emacs-bbd347f5f7e99da1a559dad818b5fa8f59c0901e.tar.gz emacs-bbd347f5f7e99da1a559dad818b5fa8f59c0901e.tar.bz2 emacs-bbd347f5f7e99da1a559dad818b5fa8f59c0901e.zip |
Merge from trunk.
Diffstat (limited to 'lisp/emacs-lisp/lisp.el')
-rw-r--r-- | lisp/emacs-lisp/lisp.el | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index 4efdc3240cd..bcb7fab026b 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -447,7 +447,21 @@ Optional ARG is ignored." ;; Try first in this order for the sake of languages with nested ;; functions where several can end at the same place as with ;; the offside rule, e.g. Python. - (beginning-of-defun) + + ;; Finding the start of the function is a bit problematic since + ;; `beginning-of-defun' when we are on the first character of + ;; the function might go to the previous function. + ;; + ;; Therefore we first move one character forward and then call + ;; `beginning-of-defun'. However now we must check that we did + ;; not move into the next function. + (let ((here (point))) + (unless (eolp) + (forward-char)) + (beginning-of-defun) + (when (< (point) here) + (goto-char here) + (beginning-of-defun))) (setq beg (point)) (end-of-defun) (setq end (point)) |