From: Daniel Pfeiffer Date: Sat, 21 May 2005 02:46:37 +0000 (+0000) Subject: (makefile-imenu-generic-expression): Use function to find dependencies, because regex... X-Git-Tag: ttn-vms-21-2-B4~108 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=774cd45416f0d0bfb5b69ace8d10d35ea7e288ee;p=emacs.git (makefile-imenu-generic-expression): Use function to find dependencies, because regexp alone is so complex, it easily goes into an endless loop. (makefile-makepp-mode): Also add submenu for Perl functions defined in the makefile. (makefile-bsdmake-mode): Special imenu-generic-expression no longer needed, due to function call. (makefile-match-dependency): Take BOUND into account when checking if we're through. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index b14240139ad..65fd9a68889 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,23 @@ +2005-05-21 Daniel Pfeiffer + + * files.el (auto-mode-alist): Check GNUmakefile before makefile. + Default to makefile-bsdmake-mode on BSD systems. + + * imenu.el (imenu-generic-expression, imenu--generic-function'): + REGEXP may also be a search function now. The part of doc-string + for describing the structure was 95% identical to that of + `imenu--generic-function'. Unify it there. + + * progmodes/make-mode.el (makefile-imenu-generic-expression): Use + function to find dependencies, because regexp alone is so complex, + it easily goes into an endless loop. + (makefile-makepp-mode): Also add submenu for Perl functions + defined in the makefile. + (makefile-bsdmake-mode): Special imenu-generic-expression no + longer needed, due to function call. + (makefile-match-dependency): Take BOUND into account when checking + if we're through. + 2005-05-20 Jay Belanger * calc/calc-units.el (calc-invalidate-units-table): diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el index 86002768757..05c3ac50787 100644 --- a/lisp/progmodes/make-mode.el +++ b/lisp/progmodes/make-mode.el @@ -484,7 +484,7 @@ not be enclosed in { } or ( )." ("\\\\\n" 0 "."))) (defvar makefile-imenu-generic-expression - `(("Dependencies" ,makefile-dependency-regex 1) + `(("Dependencies" makefile-previous-dependency 1) ("Macro Assignment" ,makefile-macroassign-regex 1)) "Imenu generic expression for Makefile mode. See `imenu-generic-expression'.") @@ -854,7 +854,10 @@ Makefile mode can be configured by modifying the following variables: "^\t[ \t]*\\(\\(?:\\(?:noecho\\|ignore[-_]error\\|[-@]+\\)[ \t]*\\)*\\)\\(\\(&\\S +\\)?\\(?:.+\\\\\n\\)*.+\\)") (setq font-lock-defaults - `(makefile-makepp-font-lock-keywords ,@(cdr font-lock-defaults)))) + `(makefile-makepp-font-lock-keywords ,@(cdr font-lock-defaults)) + imenu-generic-expression + `(("Functions" "^[ \t]*\\(?:make\\)?sub[ \t]+\\([A-Za-z0-9_]+\\)" 1) + ,@imenu-generic-expression))) ;;;###autoload (define-derived-mode makefile-bsdmake-mode makefile-mode "BSDmakefile" @@ -866,10 +869,7 @@ Makefile mode can be configured by modifying the following variables: (set (make-local-variable 'makefile-rule-action-regex) "^\t[ \t]*\\([-+@]*\\)[ \t]*\\(\\(?:.+\\\\\n\\)*.+\\)") (setq font-lock-defaults - `(makefile-bsdmake-font-lock-keywords ,@(cdr font-lock-defaults)) - imenu-generic-expression - `(("Dependencies" ,makefile-dependency-regex 1) - ,@(cdr imenu-generic-expression)))) + `(makefile-bsdmake-font-lock-keywords ,@(cdr font-lock-defaults)))) @@ -1682,7 +1682,7 @@ matched in a rule action." (catch 'found (let ((pt (point))) (while (progn (skip-chars-forward makefile-dependency-skip bound) - (not (eobp))) + (< (point) (or bound (point-max)))) (forward-char) (or (eq (char-after) ?=) (get-text-property (1- (point)) 'face)