Thanks for your bug-report, Steven [ by now, it seems you've been told
plenty of times how/where to send your patch, right? ].
I installed your patch with a few changes. The most important one is to
make sure that people who have customized their ido-decorations still
get the same behavior as before. See the final patch below.
Stefan
=== modified file 'etc/NEWS'
--- etc/NEWS 2013-03-30 13:49:00 +0000
+++ etc/NEWS 2013-04-05 13:54:30 +0000
@@ -87,6 +87,8 @@
* Changes in Specialized Modes and Packages in Emacs 24.4
+** `ido-decorations' has been slightly extended to give a bit more control.
+
** More packages look for ~/.emacs.d/<foo> additionally to ~/.<foo>.
Affected files:
~/.emacs.d/timelog replaces ~/.timelog
=== modified file 'lisp/ChangeLog'
--- lisp/ChangeLog 2013-04-05 10:18:43 +0000
+++ lisp/ChangeLog 2013-04-05 13:55:28 +0000
@@ -1,3 +1,9 @@
+2013-04-05 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * ido.el (ido-completions): Use extra elements of ido-decorations
+ (bug#14143).
+ (ido-decorations): Update docstring.
+
2013-04-05 Michael Albinus <michael.albinus@gmx.de>
* autorevert.el (auto-revert-mode, auto-revert-tail-mode)
=== modified file 'lisp/ido.el'
--- lisp/ido.el 2013-03-20 03:05:34 +0000
+++ lisp/ido.el 2013-04-05 13:49:23 +0000
@@ -765,7 +765,7 @@
(defcustom ido-decorations '( "{" "}" " | " " | ..." "[" "]" " [No match]" " [Matched]" " [Not readable]" " [Too big]" " [Confirm]")
"List of strings used by ido to display the alternatives in the minibuffer.
-There are 11 elements in this list:
+There are between 11 and 13 elements in this list:
1st and 2nd elements are used as brackets around the prospect list,
3rd element is the separator between prospects (ignored if `ido-separator' is set),
4th element is the string inserted at the end of a truncated list of prospects,
@@ -775,7 +775,9 @@
8th element is displayed if there is a single match (and faces are not used),
9th element is displayed when the current directory is non-readable,
10th element is displayed when directory exceeds `ido-max-directory-size',
-11th element is displayed to confirm creating new file or buffer."
+11th element is displayed to confirm creating new file or buffer.
+12th and 13th elements (if present) are used as brackets around the sole
+remaining completion. If absent, elements 5 and 6 are used instead."
:type '(repeat string)
:group 'ido)
@@ -4581,10 +4583,12 @@
(string-equal (match-string 0 (ido-name (car comps)))
(ido-name (car comps))))
""
- ;; when there is one match, show the matching file name in full
- (concat (nth 4 ido-decorations) ;; [ ... ]
+ ;; When there is only one match, show the matching file
+ ;; name in full wrapped in [ ... ].
+ (concat
+ (or (nth 11 ido-decorations) (nth 4 ido-decorations))
(ido-name (car comps))
- (nth 5 ido-decorations)))
+ (or (nth 12 ido-decorations) (nth 5 ido-decorations))))
(if (not ido-use-faces) (nth 7 ido-decorations)))) ;; [Matched]
(t ;multiple matches
(let* ((items (if (> ido-max-prospects 0) (1+ ido-max-prospects) 999))