1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-12 16:23:57 +00:00

(partial-completion-mode): Remove advice of read-file-name-internal.

(PC-do-completion): Rebind minibuffer-completion-table.
(PC-read-file-name-internal): New function doing what
read-file-name-internal advice did.
This commit is contained in:
Richard M. Stallman 2007-07-01 17:19:53 +00:00
parent f8add097ba
commit b1916c6edb
2 changed files with 28 additions and 22 deletions

View File

@ -1,3 +1,15 @@
2007-07-01 Richard Stallman <rms@gnu.org>
* cus-start.el (max-mini-window-height): Added.
2007-07-01 Sean O'Rourke <sorourke@cs.ucsd.edu> (tiny change)
* complete.el (partial-completion-mode): Remove advice of
read-file-name-internal.
(PC-do-completion): Rebind minibuffer-completion-table.
(PC-read-file-name-internal): New function doing what
read-file-name-internal advice did.
2007-07-01 Paul Pogonyshev <pogonyshev@gmx.net>
* emacs-lisp/byte-opt.el: Set `binding-is-magic'

View File

@ -222,13 +222,6 @@ second TAB brings up the `*Completions*' buffer."
(remove-hook 'find-file-not-found-functions 'PC-look-for-include-file))
((not PC-disable-includes)
(add-hook 'find-file-not-found-functions 'PC-look-for-include-file)))
;; ... with some underhand redefining.
(cond ((not partial-completion-mode)
(ad-disable-advice 'read-file-name-internal 'around 'PC-include-file)
(ad-activate 'read-file-name-internal))
((not PC-disable-includes)
(ad-enable-advice 'read-file-name-internal 'around 'PC-include-file)
(ad-activate 'read-file-name-internal)))
;; Adjust the completion selection in *Completion* buffers to the way
;; we work. The default minibuffer completion code only completes the
;; text before point and leaves the text after point alone (new in
@ -430,7 +423,9 @@ point-max (as is appropriate for completing a file name). If
GOTO-END is non-nil, however, it instead replaces up to END."
(or beg (setq beg (minibuffer-prompt-end)))
(or end (setq end (point-max)))
(let* ((table minibuffer-completion-table)
(let* ((table (if (eq minibuffer-completion-table 'read-file-name-internal)
'PC-read-file-name-internal
minibuffer-completion-table))
(pred minibuffer-completion-predicate)
(filename (funcall PC-completion-as-file-name-predicate))
(dirname nil) ; non-nil only if a filename is being completed
@ -523,11 +518,11 @@ GOTO-END is non-nil, however, it instead replaces up to END."
(insert str)
(setq end (+ beg (length str)))))
(if origstr
;; If the wildcards were introduced by us, it's possible
;; that read-file-name-internal (especially our
;; PC-include-file advice) can still find matches for the
;; original string even if we couldn't, so remove the
;; added wildcards.
;; If the wildcards were introduced by us, it's
;; possible that PC-read-file-name-internal can
;; still find matches for the original string
;; even if we couldn't, so remove the added
;; wildcards.
(setq str origstr)
(setq filename nil table nil pred nil)))))
@ -912,7 +907,7 @@ or properties are considered."
(point-min) t)
(+ (point) 2)
(point-min)))
(minibuffer-completion-table 'read-file-name-internal)
(minibuffer-completion-table 'PC-read-file-name-internal)
(minibuffer-completion-predicate "")
(PC-not-minibuffer t))
(goto-char end)
@ -1098,24 +1093,23 @@ absolute rather than relative to some directory on the SEARCH-PATH."
(setq sorted (cdr sorted)))
compressed))))
(defadvice read-file-name-internal (around PC-include-file disable)
(if (string-match "<\\([^\"<>]*\\)>?\\'" (ad-get-arg 0))
(let* ((string (ad-get-arg 0))
(action (ad-get-arg 2))
(name (match-string 1 string))
(defun PC-read-file-name-internal (string dir action)
"Extend `read-file-name-internal' to handle include files.
This is only used by "
(if (string-match "<\\([^\"<>]*\\)>?\\'" string)
(let* ((name (match-string 1 string))
(str2 (substring string (match-beginning 0)))
(completion-table
(mapcar (lambda (x)
(format (if (string-match "/\\'" x) "<%s" "<%s>") x))
(PC-include-file-all-completions
name (PC-include-file-path)))))
(setq ad-return-value
(cond
((not completion-table) nil)
((eq action 'lambda) (test-completion str2 completion-table nil))
((eq action nil) (PC-try-completion str2 completion-table nil))
((eq action t) (all-completions str2 completion-table nil)))))
ad-do-it))
((eq action t) (all-completions str2 completion-table nil))))
(read-file-name-internal string dir action)))
(provide 'complete)