Do emacs -q
M-x partial-completion-mode RET
C-x C-f <sys/ TAB
this will print "No Match"
in emacs-21.4 it used to give as completions the files in /usr/include/sys/
The code that implements this completion is a defadvice in complete.el:
(defadvice read-file-name-internal (around PC-include-file disable)
....
Unfortunately I could not figure out what is wrong...
Next I tried replacing that defadvice with a function that uses
`read-file-name-function' (which is new in emacs-22).
I commented out the defadvice in complete.el and replaced it with this code:
(setq read-file-name-function 'read-file-name-mytest)
(defun read-file-name-mytest (prompt &optional dir default-filename
mustmatch initial
predicate)
(if (string-match "<\\([^\"<>]*\\)>?\\'" prompt)
(let* ((string prompt)
(action mustmatch) ;(ad-get-arg 2))
(name (substring string (match-beginning 1) (match-end
1)))
(str2 (substring string (match-beginning 0)))
(completion-table
(mapcar (lambda (x) (format "<%s>" x))
(PC-include-file-all-completions
name
(PC-include-file-path)))))
(setq ad-return-value-2
(cond
((not completion-table) nil)
((eq action 'lambda) (test-completion str2
completion-table nil))
((eq action nil) (try-completion str2 completion-table
nil))
((eq action t) (all-completions str2 completion-table
nil)))))
(let ((read-file-name-function nil))
(read-file-name prompt dir default-filename mustmatch initial
predicate)))
which tries to do the same thing as the original defadvice. But this
does not work as the `read-file-name-mytest' function is not called
when needed.
Looking at the code in fileio.c:Fread_file_name I am not sure I
understand how `read-file-name-function' is supposed to be used. :-(
Can somebody please look over this?
Thanks
--dan
_______________________________________________
emacs-pretest-bug mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug