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)