From c2801b5048cb216396fc24be619b327e43a6cc43 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 8 Nov 2002 23:39:29 +0000 Subject: [PATCH] (PC-do-completion): Make partial-completion work with incomplete directory names. --- lisp/complete.el | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lisp/complete.el b/lisp/complete.el index de58752b636..baa8a5a5f10 100644 --- a/lisp/complete.el +++ b/lisp/complete.el @@ -78,11 +78,6 @@ ;; The regular M-TAB (lisp-complete-symbol) command also supports ;; 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 ;; files. For example, `C-x C-f RET' reads the file ;; /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.") PC-ndelims-regex (concat "[^" PC-delims "]*") 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 (and filename (string-match "\\*.*/" str) -- 2.39.2