* lisp/pcmpl-gnu.el: Don't fail when there is no Makefile nor -f arg.

(pcmpl-gnu-makefile-regexps): Accept "makefile" as well as files that
end in ".mk".
(pcmpl-gnu-make-rule-names): Check "makefile" and ignore errors
when reading the makefile.

Fixes: debbugs:10116
This commit is contained in:
Stefan Monnier 2011-12-08 08:20:20 -05:00
parent 8b8059decd
commit 39c9faef2f
2 changed files with 15 additions and 5 deletions

View file

@ -1,3 +1,11 @@
2011-12-08 Stefan Monnier <monnier@iro.umontreal.ca>
* pcmpl-gnu.el: Don't fail when there is no Makefile nor -f arg.
(pcmpl-gnu-makefile-regexps): Accept "makefile" as well as files that
end in ".mk".
(pcmpl-gnu-make-rule-names): Check "makefile" and ignore errors
when reading the makefile (bug#10116).
2011-12-06 Stefan Monnier <monnier@iro.umontreal.ca>
* pcmpl-gnu.el (pcomplete/make): Also allow filename arguments

View file

@ -35,7 +35,7 @@
;; User Variables:
(defcustom pcmpl-gnu-makefile-regexps
'("\\`GNUmakefile" "\\`Makefile" "\\.mak\\'")
'("\\`GNUmakefile" "\\`[Mm]akefile" "\\.ma?k\\'")
"A list of regexps that will match Makefile names."
:type '(repeat regexp)
:group 'pcmpl-gnu)
@ -112,14 +112,16 @@
"Return a list of possible make rule names in MAKEFILE."
(let* ((minus-f (member "-f" pcomplete-args))
(makefile (or (cadr minus-f)
(if (file-exists-p "GNUmakefile")
"GNUmakefile"
"Makefile")))
(cond
((file-exists-p "GNUmakefile") "GNUmakefile")
((file-exists-p "makefile") "makefile")
(t "Makefile"))))
rules)
(if (not (file-readable-p makefile))
(unless minus-f (list "-f"))
(with-temp-buffer
(insert-file-contents-literally makefile)
(ignore-errors ;Could be a directory or something.
(insert-file-contents makefile))
(while (re-search-forward
(concat "^\\s-*\\([^\n#%.$][^:=\n]*\\)\\s-*:[^=]") nil t)
(setq rules (append (split-string (match-string 1)) rules))))