# HG changeset patch # User Stefan Monnier # Date 1260062741 0 # Node ID eaa5eba6d6133f13098147274701b96fcf4d2db6 # Parent 4543cbad36dadc537302ed251e83186a1cc1177d (minibuffer-complete-and-exit): Don't replace the minibuffer's content with itself. Fold the confirm-after-completion case into the `confirm' case. (completion-pcm-word-delimiters): Add : and / to the delimiters. diff -r 4543cbad36da -r eaa5eba6d613 lisp/ChangeLog --- a/lisp/ChangeLog Sun Dec 06 00:58:40 2009 +0000 +++ b/lisp/ChangeLog Sun Dec 06 01:25:41 2009 +0000 @@ -1,3 +1,10 @@ +2009-12-06 Stefan Monnier + + * minibuffer.el (minibuffer-complete-and-exit): Don't replace the + minibuffer's content with itself. + Fold the confirm-after-completion case into the `confirm' case. + (completion-pcm-word-delimiters): Add : and / to the delimiters. + 2009-12-06 Kevin Ryde * ffap.el (ffap-rfc-path): Make this a defcustom since @@ -22,8 +29,8 @@ * bindings.el (complete-symbol): Call semantic-ia-complete-symbol if possible. - * cedet/semantic/ia.el (semantic-ia-complete-symbol): Make - argument optional. + * cedet/semantic/ia.el (semantic-ia-complete-symbol): + Make argument optional. * shell.el (shell): Require ansi-color (Bug#5113). @@ -82,12 +89,11 @@ (bibtex-field-braces-alist, bibtex-field-strings-alist) (bibtex-field-re-init): Replace only space characters by regexp for whitespace. - (bibtex-generate-url-list, bibtex-cite-matcher-alist): Fix - docstring. + (bibtex-generate-url-list, bibtex-cite-matcher-alist): Fix docstring. (bibtex-initialize): Also update bibtex-strings. (bibtex-kill-field): Preserve white space at end of entry. - (bibtex-kill-entry, bibtex-yank-pop, bibtex-insert-kill): Update - bibtex-reference-keys. + (bibtex-kill-entry, bibtex-yank-pop, bibtex-insert-kill): + Update bibtex-reference-keys. 2009-12-05 Stefan Monnier diff -r 4543cbad36da -r eaa5eba6d613 lisp/minibuffer.el --- a/lisp/minibuffer.el Sun Dec 06 00:58:40 2009 +0000 +++ b/lisp/minibuffer.el Sun Dec 06 01:25:41 2009 +0000 @@ -57,7 +57,25 @@ ;;; Todo: -;; - make partial-complete-mode obsolete: +;; - extend `boundaries' to provide various other meta-data about the +;; output of `all-completions': +;; - quoting/unquoting (so we can complete files names with envvars +;; and backslashes, and all-completion can list names without +;; quoting backslashes and dollars). +;; - indicate how to turn all-completion's output into +;; try-completion's output: e.g. completion-ignored-extensions. +;; maybe that could be merged with the "quote" operation above. +;; - completion hook to run when the completion is +;; selected/inserted (maybe this should be provided some other +;; way, e.g. as text-property, so `try-completion can also return it?) +;; both for when it's inserted via TAB or via choose-completion. +;; - indicate that `all-completions' doesn't do prefix-completion +;; but just returns some list that relates in some other way to +;; the provided string (as is the case in filecache.el), in which +;; case partial-completion (for example) doesn't make any sense +;; and neither does the completions-first-difference highlight. + +;; - make partial-completion-mode obsolete: ;; - (?) style completion for file names. ;; This can't be done identically just by tweaking completion, ;; because partial-completion-mode's behavior is to expand @@ -414,8 +432,8 @@ POINT is the position of point within STRING. The return value is a list of completions and may contain the base-size in the last `cdr'." - ;; FIXME: We need to additionally return completion-extra-size (similar - ;; to completion-base-size but for the text after point). + ;; FIXME: We need to additionally return the info needed for the + ;; second part of completion-base-position. (completion--some (lambda (style) (funcall (nth 2 (assq style completion-styles-alist)) string table pred point)) @@ -626,6 +644,12 @@ ((test-completion (buffer-substring beg end) minibuffer-completion-table minibuffer-completion-predicate) + ;; FIXME: completion-ignore-case has various slightly + ;; incompatible meanings. E.g. it can reflect whether the user + ;; wants completion to pay attention to case, or whether the + ;; string will be used in a context where case is significant. + ;; E.g. usually try-completion should obey the first, whereas + ;; test-completion should obey the second. (when completion-ignore-case ;; Fixup case of the field, if necessary. (let* ((string (buffer-substring beg end)) @@ -633,7 +657,7 @@ string minibuffer-completion-table minibuffer-completion-predicate))) - (when (and (stringp compl) + (when (and (stringp compl) (not (equal string compl)) ;; If it weren't for this piece of paranoia, I'd replace ;; the whole thing with a call to do-completion. ;; This is important, e.g. when the current minibuffer's @@ -646,22 +670,19 @@ (delete-region beg end)))) (exit-minibuffer)) - ((eq minibuffer-completion-confirm 'confirm) + ((memq minibuffer-completion-confirm '(confirm confirm-after-completion)) ;; The user is permitted to exit with an input that's rejected ;; by test-completion, after confirming her choice. - (if (eq last-command this-command) + (if (or (eq last-command this-command) + ;; For `confirm-after-completion' we only ask for confirmation + ;; if trying to exit immediately after typing TAB (this + ;; catches most minibuffer typos). + (and (eq minibuffer-completion-confirm 'confirm-after-completion) + (not (memq last-command minibuffer-confirm-exit-commands)))) (exit-minibuffer) (minibuffer-message "Confirm") nil)) - ((eq minibuffer-completion-confirm 'confirm-after-completion) - ;; Similar to the above, but only if trying to exit immediately - ;; after typing TAB (this catches most minibuffer typos). - (if (memq last-command minibuffer-confirm-exit-commands) - (progn (minibuffer-message "Confirm") - nil) - (exit-minibuffer))) - (t ;; Call do-completion, but ignore errors. (case (condition-case nil @@ -1080,9 +1101,6 @@ "Complete the text between START and END using COLLECTION. Return nil if there is no valid completion, else t. Point needs to be somewhere between START and END." - ;; FIXME: some callers need to setup completion-ignore-case, - ;; completion-ignored-extensions. The latter can be embedded in the - ;; completion tables, but the first cannot (actually, maybe it should). (assert (<= start (point)) (<= (point) end)) ;; FIXME: undisplay the *Completions* buffer once the completion is done. (with-wrapper-hook @@ -1247,6 +1265,8 @@ ;; substitute-in-file-name turns "fo-$TO-ba" into "fo-o/b-ba", there's ;; no way for us to return proper boundaries info, because the ;; boundary is not (yet) in `string'. + ;; FIXME: Actually there is a way to return correct boundaries info, + ;; at the condition of modifying the all-completions return accordingly. (let ((start (length (file-name-directory string))) (end (string-match-p "/" (cdr action)))) (list* 'boundaries start end))) @@ -1644,7 +1664,7 @@ (defun completion-pcm--prepare-delim-re (delims) (setq completion-pcm--delim-wild-regex (concat "[" delims "*]"))) -(defcustom completion-pcm-word-delimiters "-_. " +(defcustom completion-pcm-word-delimiters "-_./: " "A string of characters treated as word delimiters for completion. Some arcane rules: If `]' is in this string, it must come first.