changeset 13847:36556403b62b

(makefile-add-log-defun): Rewrite to scan back checking one line at a time. Notice blank lines and comments.
author Richard M. Stallman <rms@gnu.org>
date Mon, 25 Dec 1995 01:43:07 +0000
parents 398b490f2df2
children 5f38596d591e
files lisp/progmodes/make-mode.el
diffstat 1 files changed, 23 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/make-mode.el	Mon Dec 25 01:24:56 1995 +0000
+++ b/lisp/progmodes/make-mode.el	Mon Dec 25 01:43:07 1995 +0000
@@ -1328,19 +1328,30 @@
 ;;; Support for other packages, like add-log and imenu.
 
 (defun makefile-add-log-defun ()
-  ;; "Return name of target or macro point is in, or nil."
+  "Return name of target or variable assignment that point is in.
+If it isn't in one, return nil."
   (save-excursion
-    (beginning-of-line)
-    (cond
-     ((looking-at makefile-macroassign-regex)
-      (buffer-substring (match-beginning 1)
-			(match-end 1)))
-     ((progn
-	(or (eobp) (forward-char))
-	(re-search-backward makefile-dependency-regex nil t))
-      (buffer-substring (match-beginning 1)
-			(match-end 1)))
-     (t nil))))
+    (let (found)
+      (beginning-of-line)
+      ;; Scan back line by line, noticing when we come to a
+      ;; variable or rule definition, and giving up when we see
+      ;; a line that is not part of either of those.
+      (while (not found)
+	(cond
+	 ((looking-at makefile-macroassign-regex)
+	  (setq found (buffer-substring-no-properties (match-beginning 1)
+							(match-end 1))))
+	 ((looking-at makefile-dependency-regex)
+	  (setq found (buffer-substring-no-properties (match-beginning 1)
+						      (match-end 1))))
+	 ;; Don't keep looking across a blank line or comment.  Give up.
+	 ((looking-at "$\\|#")
+	  (setq found 'bobp))
+	 ((bobp)
+	  (setq found 'bobp)))
+	(or found
+	    (forward-line -1)))
+      (if (stringp found) found))))
 
 ;; FIXME it might be nice to have them separated by macro vs target.
 (defun makefile-menu-index-function ()