891 |
(beginning-of-line) |
(beginning-of-line) |
892 |
;; makefile-match-dependency done backwards: |
;; makefile-match-dependency done backwards: |
893 |
(catch 'found |
(catch 'found |
894 |
(while (and (< (skip-chars-backward makefile-dependency-skip) 0) |
(while (progn (skip-chars-backward makefile-dependency-skip) |
895 |
(not (bobp))) |
(not (bobp))) |
896 |
(or (prog1 (eq (char-after) ?=) |
(or (prog1 (eq (char-after) ?=) |
897 |
(backward-char)) |
(backward-char)) |
898 |
(get-text-property (point) 'face) |
(get-text-property (point) 'face) |
998 |
(defun makefile-pickup-targets () |
(defun makefile-pickup-targets () |
999 |
"Notice names of all target definitions in Makefile." |
"Notice names of all target definitions in Makefile." |
1000 |
(interactive) |
(interactive) |
1001 |
(if (not makefile-need-target-pickup) |
(when makefile-need-target-pickup |
1002 |
nil |
(setq makefile-need-target-pickup nil |
1003 |
(setq makefile-need-target-pickup nil) |
makefile-target-table nil |
1004 |
(setq makefile-target-table nil) |
makefile-has-prereqs nil) |
|
(setq makefile-has-prereqs nil) |
|
1005 |
(save-excursion |
(save-excursion |
1006 |
(goto-char (point-min)) |
(goto-char (point-min)) |
1007 |
(while (makefile-match-dependency nil) |
(while (makefile-match-dependency nil) |
1008 |
(makefile-add-this-line-targets))) |
(goto-char (match-beginning 1)) |
1009 |
(message "Read targets OK."))) |
(while (let ((target-name |
1010 |
|
(buffer-substring-no-properties (point) |
1011 |
(defun makefile-add-this-line-targets () |
(progn |
1012 |
(save-excursion |
(skip-chars-forward "^ \t:#") |
1013 |
(beginning-of-line) |
(point)))) |
|
(let ((done-with-line nil) |
|
|
(line-number (1+ (count-lines (point-min) (point))))) |
|
|
(while (not done-with-line) |
|
|
(skip-chars-forward " \t") |
|
|
(if (not (setq done-with-line (or (eolp) |
|
|
(char-equal (char-after (point)) ?:)))) |
|
|
(progn |
|
|
(let* ((start-of-target-name (point)) |
|
|
(target-name |
|
|
(progn |
|
|
(skip-chars-forward "^ \t:#") |
|
|
(buffer-substring start-of-target-name (point)))) |
|
1014 |
(has-prereqs |
(has-prereqs |
1015 |
(not (looking-at ":[ \t]*$")))) |
(not (looking-at ":[ \t]*$")))) |
1016 |
(if (makefile-remember-target target-name has-prereqs) |
(if (makefile-remember-target target-name has-prereqs) |
1017 |
(message "Picked up target \"%s\" from line %d" |
(message "Picked up target \"%s\" from line %d" |
1018 |
target-name line-number))))))))) |
target-name (line-number-at-pos))) |
1019 |
|
(skip-chars-forward " \t") |
1020 |
|
(not (or (eolp) (eq (char-after) ?:))))) |
1021 |
|
(forward-line))) |
1022 |
|
(message "Read targets OK."))) |
1023 |
|
|
1024 |
(defun makefile-pickup-macros () |
(defun makefile-pickup-macros () |
1025 |
"Notice names of all macro definitions in Makefile." |
"Notice names of all macro definitions in Makefile." |
1026 |
(interactive) |
(interactive) |
1027 |
(if (not makefile-need-macro-pickup) |
(when makefile-need-macro-pickup |
1028 |
nil |
(setq makefile-need-macro-pickup nil |
1029 |
(setq makefile-need-macro-pickup nil) |
makefile-macro-table nil) |
|
(setq makefile-macro-table nil) |
|
1030 |
(save-excursion |
(save-excursion |
1031 |
(goto-char (point-min)) |
(goto-char (point-min)) |
1032 |
(while (re-search-forward makefile-macroassign-regex nil t) |
(while (re-search-forward makefile-macroassign-regex nil t) |
1033 |
(makefile-add-this-line-macro) |
(goto-char (match-beginning 1)) |
1034 |
(forward-line 1))) |
(let ((macro-name (buffer-substring-no-properties (point) |
1035 |
|
(progn |
1036 |
|
(skip-chars-forward "^ \t:#=*") |
1037 |
|
(point))))) |
1038 |
|
(if (makefile-remember-macro macro-name) |
1039 |
|
(message "Picked up macro \"%s\" from line %d" |
1040 |
|
macro-name (line-number-at-pos)))) |
1041 |
|
(forward-line))) |
1042 |
(message "Read macros OK."))) |
(message "Read macros OK."))) |
1043 |
|
|
|
(defun makefile-add-this-line-macro () |
|
|
(save-excursion |
|
|
(beginning-of-line) |
|
|
(skip-chars-forward " \t") |
|
|
(unless (eolp) |
|
|
(let* ((start-of-macro-name (point)) |
|
|
(line-number (1+ (count-lines (point-min) (point)))) |
|
|
(macro-name (progn |
|
|
(skip-chars-forward "^ \t:#=*") |
|
|
(buffer-substring start-of-macro-name (point))))) |
|
|
(if (makefile-remember-macro macro-name) |
|
|
(message "Picked up macro \"%s\" from line %d" |
|
|
macro-name line-number)))))) |
|
|
|
|
1044 |
(defun makefile-pickup-everything (arg) |
(defun makefile-pickup-everything (arg) |
1045 |
"Notice names of all macros and targets in Makefile. |
"Notice names of all macros and targets in Makefile. |
1046 |
Prefix arg means force pickups to be redone." |
Prefix arg means force pickups to be redone." |
1047 |
(interactive "P") |
(interactive "P") |
1048 |
(if arg |
(if arg |
1049 |
(progn |
(setq makefile-need-target-pickup t |
1050 |
(setq makefile-need-target-pickup t) |
makefile-need-macro-pickup t)) |
|
(setq makefile-need-macro-pickup t))) |
|
1051 |
(makefile-pickup-macros) |
(makefile-pickup-macros) |
1052 |
(makefile-pickup-targets) |
(makefile-pickup-targets) |
1053 |
(if makefile-pickup-everything-picks-up-filenames-p |
(if makefile-pickup-everything-picks-up-filenames-p |
1058 |
Checks each filename against `makefile-ignored-files-in-pickup-regex' |
Checks each filename against `makefile-ignored-files-in-pickup-regex' |
1059 |
and adds all qualifying names to the list of known targets." |
and adds all qualifying names to the list of known targets." |
1060 |
(interactive) |
(interactive) |
1061 |
(let* ((dir (file-name-directory (buffer-file-name))) |
(mapc (lambda (name) |
1062 |
(raw-filename-list (if dir |
(or (file-directory-p name) |
1063 |
(file-name-all-completions "" dir) |
(string-match makefile-ignored-files-in-pickup-regex name) |
1064 |
(file-name-all-completions "" "")))) |
(if (makefile-remember-target name) |
1065 |
(mapcar (lambda (name) |
(message "Picked up file \"%s\" as target" name)))) |
1066 |
(if (and (not (file-directory-p name)) |
(file-name-all-completions "" (or (file-name-directory (buffer-file-name)) "")))) |
|
(not (string-match makefile-ignored-files-in-pickup-regex |
|
|
name))) |
|
|
(if (makefile-remember-target name) |
|
|
(message "Picked up file \"%s\" as target" name)))) |
|
|
raw-filename-list))) |
|
1067 |
|
|
1068 |
|
|
1069 |
|
|
1681 |
matched in a rule action." |
matched in a rule action." |
1682 |
(catch 'found |
(catch 'found |
1683 |
(let ((pt (point))) |
(let ((pt (point))) |
1684 |
(while (and (> (skip-chars-forward makefile-dependency-skip bound) 0) |
(while (progn (skip-chars-forward makefile-dependency-skip bound) |
1685 |
(not (eobp))) |
(not (eobp))) |
1686 |
(forward-char) |
(forward-char) |
1687 |
(or (eq (char-after) ?=) |
(or (eq (char-after) ?=) |
1688 |
(get-text-property (1- (point)) 'face) |
(get-text-property (1- (point)) 'face) |