diff options
Diffstat (limited to 'lisp/complete.el')
-rw-r--r-- | lisp/complete.el | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lisp/complete.el b/lisp/complete.el index daeac1f3bfd..fea94618632 100644 --- a/lisp/complete.el +++ b/lisp/complete.el @@ -263,6 +263,7 @@ See `PC-complete' for details." (filename (memq table '(read-file-name-internal read-directory-name-internal))) (dirname nil) + dirlength (str (buffer-substring beg end)) (incname (and filename (string-match "<\\([^\"<>]*\\)>?$" str))) (ambig nil) @@ -278,6 +279,13 @@ See `PC-complete' for details." (PC-is-complete-p str table pred)) 'complete + ;; Record how many characters at the beginning are not included + ;; in completion. + (setq dirlength + (if filename + (length (file-name-directory str)) + 0)) + ;; Do substitutions in directory names (and filename (not (equal str (setq p (substitute-in-file-name str)))) @@ -524,7 +532,13 @@ See `PC-complete' for details." (if (or completion-auto-help (eq mode 'help)) (with-output-to-temp-buffer "*Completions*" - (display-completion-list (sort helpposs 'string-lessp))) + (display-completion-list (sort helpposs 'string-lessp)) + (save-excursion + (set-buffer standard-output) + ;; Record which part of the buffer we are completing + ;; so that choosing a completion from the list + ;; knows how much old text to replace. + (setq completion-base-size dirlength))) (PC-temp-minibuffer-message " (Next char not unique)")) nil))))) |