Mercurial > emacs
changeset 58737:a67575cbdd93
(add-log-current-defun): Handle the case where point
is in the header part of a DEFUN construct.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 03 Dec 2004 00:04:45 +0000 |
parents | 311652551ce2 |
children | ffd48e9f6a57 |
files | lisp/add-log.el |
diffstat | 1 files changed, 22 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/add-log.el Thu Dec 02 23:43:51 2004 +0000 +++ b/lisp/add-log.el Fri Dec 03 00:04:45 2004 +0000 @@ -779,9 +779,28 @@ (forward-line 1)) (or (eobp) (forward-char 1)) - (beginning-of-defun) - (when (progn (end-of-defun) - (< location (point))) + (let (maybe-beg) + ;; Try to find the containing defun. + (beginning-of-defun) + (end-of-defun) + ;; If the defun we found ends before the desired position, + ;; see if there's a DEFUN construct + ;; between that end and the desired position. + (when (save-excursion + (and (> location (point)) + (re-search-forward "^DEFUN" + (save-excursion + (goto-char location) + (line-end-position)) + t) + (re-search-forward "^{" nil t) + (setq maybe-beg (point)))) + ;; If so, go to the end of that instead. + (goto-char maybe-beg) + (end-of-defun))) + ;; If the desired position is within the defun we found, + ;; find the function name. + (when (< location (point)) (backward-sexp 1) (let (beg tem)