From: storm@cua.dk (Kim F. Storm)
To: emacs-devel@gnu.org
Subject: Re: IDO doesn't honor confirm-nonexistent-file-or-buffer
Date: Fri, 08 May 2009 12:25:41 +0200 [thread overview]
Message-ID: <87ljp728nu.fsf@kfs-lx.rd.rdm> (raw)
In-Reply-To: <87y6t8vgsy.fsf@thinkpad.tsdh.de> (Tassilo Horn's message of "Thu, 07 May 2009 21:44:45 +0200")
Tassilo Horn <tassilo@member.fsf.org> writes:
>> Does this patch give the desired result?
>
> Basically yes, but I like the standard visual feedback and usage much
> better, e.g. no y-or-n-p but a [confirm] after the minibuffer input and
> another RET finds the nonexistent file or buffer. This is not
> disturbing at all, while the y-or-n-p is: No matter my decision, I
> always have to move fingers to either y or n.
I see - and agree. Try the following patch instead:
*** ido.el.~1.155.~ 2009-01-05 16:30:50.000000000 +0100
--- ido.el 2009-05-08 12:22:33.000000000 +0200
***************
*** 768,774 ****
:type '(choice string (const nil))
:group 'ido)
! (defcustom ido-decorations '( "{" "}" " | " " | ..." "[" "]" " [No match]" " [Matched]" " [Not readable]" " [Too big]")
"List of strings used by ido to display the alternatives in the minibuffer.
There are 10 elements in this list:
1st and 2nd elements are used as brackets around the prospect list,
--- 768,774 ----
:type '(choice string (const nil))
:group 'ido)
! (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 10 elements in this list:
1st and 2nd elements are used as brackets around the prospect list,
***************
*** 779,785 ****
7th element is the string displayed when there are no matches, and
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'."
:type '(repeat string)
:group 'ido)
--- 779,786 ----
7th element is the string displayed when there are no matches, and
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."
:type '(repeat string)
:group 'ido)
***************
*** 1082,1087 ****
--- 1083,1091 ----
;; Non-nil if matching file must be selected.
(defvar ido-require-match)
+ ;; Non-nil if we should add [confirm] to prompt
+ (defvar ido-show-confirm-message)
+
;; Stores a temporary version of the file list being created.
(defvar ido-temp-list)
***************
*** 1803,1812 ****
DEFAULT if given is the default item to start with.
If REQUIRE-MATCH is non-nil, an existing file must be selected.
If INITIAL is non-nil, it specifies the initial input string."
- ;; Ido does not implement the `confirm' and
- ;; `confirm-after-completion' values of REQUIRE-MATCH.
- (if (memq require-match '(confirm confirm-after-completion))
- (setq require-match nil))
(let
((ido-cur-item item)
(ido-entry-buffer (current-buffer))
--- 1807,1812 ----
***************
*** 1829,1834 ****
--- 1829,1835 ----
(ido-case-fold ido-case-fold)
(ido-enable-prefix ido-enable-prefix)
(ido-enable-regexp ido-enable-regexp)
+ (ido-show-confirm-message nil)
)
(ido-setup-completion-map)
***************
*** 2067,2072 ****
--- 2068,2074 ----
;; Handling the require-match must be done in a better way.
((and require-match
+ (not (memq require-match '(confirm confirm-after-completion)))
(not (if ido-directory-too-big
(file-exists-p (concat ido-current-directory ido-final-text))
(ido-existing-item-p))))
***************
*** 2158,2164 ****
(ido-current-directory nil)
(ido-directory-nonreadable nil)
(ido-directory-too-big nil)
! (buf (ido-read-internal 'buffer (or prompt "Buffer: ") 'ido-buffer-history default nil initial)))
;; Choose the buffer name: either the text typed in, or the head
;; of the list of matches
--- 2160,2168 ----
(ido-current-directory nil)
(ido-directory-nonreadable nil)
(ido-directory-too-big nil)
! (require-match (confirm-nonexistent-file-or-buffer))
! (buf (ido-read-internal 'buffer (or prompt "Buffer: ") 'ido-buffer-history default
! require-match initial)))
;; Choose the buffer name: either the text typed in, or the head
;; of the list of matches
***************
*** 2195,2204 ****
(ido-visit-buffer buf method t)))
;; buffer doesn't exist
! ((eq ido-create-new-buffer 'never)
(message "No buffer matching `%s'" buf))
((and (eq ido-create-new-buffer 'prompt)
(not (y-or-n-p (format "No buffer matching `%s', create one? " buf))))
nil)
--- 2199,2210 ----
(ido-visit-buffer buf method t)))
;; buffer doesn't exist
! ((and (eq ido-create-new-buffer 'never)
! (null require-match))
(message "No buffer matching `%s'" buf))
((and (eq ido-create-new-buffer 'prompt)
+ (null require-match)
(not (y-or-n-p (format "No buffer matching `%s', create one? " buf))))
nil)
***************
*** 2307,2313 ****
(or prompt "Find file: ")
'ido-file-history
(and (eq method 'alt-file) buffer-file-name)
! nil initial))))
;; Choose the file name: either the text typed in, or the head
;; of the list of matches
--- 2313,2319 ----
(or prompt "Find file: ")
'ido-file-history
(and (eq method 'alt-file) buffer-file-name)
! (confirm-nonexistent-file-or-buffer) initial))))
;; Choose the file name: either the text typed in, or the head
;; of the list of matches
***************
*** 2681,2686 ****
--- 2687,2698 ----
"Exit minibuffer, but make sure we have a match if one is needed."
(interactive)
(if (and (or (not ido-require-match)
+ (if (memq ido-require-match '(confirm confirm-after-completion))
+ (if (or (eq ido-cur-item 'dir)
+ (eq last-command this-command))
+ t
+ (setq ido-show-confirm-message t)
+ nil))
(ido-existing-item-p))
(not ido-incomplete-regexp))
(exit-minibuffer)))
***************
*** 4398,4403 ****
--- 4410,4416 ----
minibuffer-completion-table
minibuffer-completion-predicate
(not minibuffer-completion-confirm))))
+ (setq ido-show-confirm-message nil)
(ido-trace "inf" inf)
(insert inf))
))))
***************
*** 4430,4435 ****
--- 4443,4450 ----
(cond ((null comps)
(cond
+ (ido-show-confirm-message
+ (or (nth 11 ido-decorations) " [Confirm]"))
(ido-directory-nonreadable
(or (nth 8 ido-decorations) " [Not readable]"))
(ido-directory-too-big
--
Kim F. Storm <storm@cua.dk> http://www.cua.dk
next prev parent reply other threads:[~2009-05-08 10:25 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-07 9:04 IDO doesn't honor confirm-nonexistent-file-or-buffer Tassilo Horn
2009-05-07 11:38 ` Kim F. Storm
2009-05-07 12:42 ` Leo
2009-05-10 21:28 ` Kim F. Storm
2009-05-11 1:07 ` Leo
2009-05-12 21:22 ` Leo
2009-05-07 19:44 ` Tassilo Horn
2009-05-08 10:25 ` Kim F. Storm [this message]
2009-05-08 10:57 ` Tassilo Horn
2009-05-08 22:53 ` Kim F. Storm
2009-05-08 23:16 ` Tassilo Horn
2009-05-09 16:57 ` Kim F. Storm
2009-05-09 22:28 ` Stefan Monnier
2009-05-10 21:29 ` Kim F. Storm
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87ljp728nu.fsf@kfs-lx.rd.rdm \
--to=storm@cua.dk \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).