(if (or (eq flag 'complete)
(not minibuffer-completion-confirm))
(exit-minibuffer)
- (PC-temp-minibuffer-message " (Confirm)"))))))
+ (PC-temp-minibuffer-message " [Confirm]"))))))
(defun PC-completion-help ()
(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)
(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))))
(PC-do-completion 'word))
(beep)
(PC-temp-minibuffer-message (if ambig
- " (Ambiguous dir name)"
+ " [Ambiguous dir name]"
(if (eq mode 'help)
- " (No completions)"
- " (No match)")))
+ " [No completions]"
+ " [No match]")))
nil))
;; More than one valid completion found
(while (and p
(not (equal (car p) basestr)))
(setq p (cdr p)))
- (if p
-
- (progn
- (if (null mode)
- (PC-temp-minibuffer-message " (Complete, but not unique)"))
- t)
+ (and p (null mode)
+ (PC-temp-minibuffer-message " [Complete, but not unique]"))
+ (if (and p
+ (not (and (null mode)
+ (eq this-command last-command))))
+ t
;; If ambiguous, try for a partial completion
(let ((improved nil)
(if (or completion-auto-help
(eq mode 'help))
(with-output-to-temp-buffer "*Completions*"
- (display-completion-list (sort helpposs 'string-lessp)))
- (PC-temp-minibuffer-message " (Next char not unique)"))
+ (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)))))
;; Only one possible completion
(t
(if (equal basestr (car poss))
(if (null mode)
- (PC-temp-minibuffer-message " (Sole completion)"))
+ (PC-temp-minibuffer-message " [Sole completion]"))
(delete-region beg end)
(insert (format "%s"
(if filename