Commit c2801b50 authored by Stefan Monnier's avatar Stefan Monnier
Browse files

(PC-do-completion): Make partial-completion work

with incomplete directory names.
parent dc0868e1
...@@ -78,11 +78,6 @@ ...@@ -78,11 +78,6 @@
;; The regular M-TAB (lisp-complete-symbol) command also supports ;; The regular M-TAB (lisp-complete-symbol) command also supports
;; partial completion in this package. ;; partial completion in this package.
;; File name completion does not do partial completion of directories
;; on the path, e.g., "/u/b/f" will not complete to "/usr/bin/foo",
;; but you can put *'s in the path to accomplish this: "/u*/b*/f".
;; Stars are required for performance reasons.
;; In addition, this package includes a feature for accessing include ;; In addition, this package includes a feature for accessing include
;; files. For example, `C-x C-f <sys/time.h> RET' reads the file ;; files. For example, `C-x C-f <sys/time.h> RET' reads the file
;; /usr/include/sys/time.h. The variable PC-include-file-path is a ;; /usr/include/sys/time.h. The variable PC-include-file-path is a
...@@ -396,6 +391,18 @@ of `minibuffer-completion-table' and the minibuffer contents.") ...@@ -396,6 +391,18 @@ of `minibuffer-completion-table' and the minibuffer contents.")
PC-ndelims-regex (concat "[^" PC-delims "]*") PC-ndelims-regex (concat "[^" PC-delims "]*")
PC-delims-list (append PC-delims nil))) PC-delims-list (append PC-delims nil)))
;; Add wildcards if necessary
(let ((dir (file-name-directory str))
(file (file-name-nondirectory str)))
(while (and (stringp dir) (not (file-directory-p dir)))
(setq dir (directory-file-name dir))
(setq file (concat (replace-regexp-in-string
PC-delim-regex "*\\&"
(file-name-nondirectory dir))
"*/" file))
(setq dir (file-name-directory dir)))
(setq str (concat dir file)))
;; Look for wildcard expansions in directory name ;; Look for wildcard expansions in directory name
(and filename (and filename
(string-match "\\*.*/" str) (string-match "\\*.*/" str)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment