all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: storm@cua.dk (Kim F. Storm)
To: emacs-devel@gnu.org
Subject: Re: IDO doesn't honor confirm-nonexistent-file-or-buffer
Date: Thu, 07 May 2009 13:38:02 +0200	[thread overview]
Message-ID: <87prel16ud.fsf@kfs-lx.rd.rdm> (raw)
In-Reply-To: <87ljp9l1w4.fsf@thinkpad.tsdh.de> (Tassilo Horn's message of "Thu, 07 May 2009 11:04:43 +0200")

Tassilo Horn <tassilo@member.fsf.org> writes:

> Hi all,
>
> I like the new find-file behavior with the default setting of
> `confirm-nonexistent-file-or-buffer', because I'm a bad but fast
> typist. ;-)
>
> I use ido-mode, but that doesn't respect this variable and opens a new
> file/buffer without any confirmation, even if the last command was a
> completion command.  It would be great if the ido commands would behave
> like the standard find-file and switch-to-buffer commands.
>
> Bye,
> Tassilo
>

Does this patch give the desired result?


*** ido.el.~1.155.~	2009-01-05 16:30:50.000000000 +0100
--- ido.el	2009-05-07 13:36:09.000000000 +0200
***************
*** 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))
--- 1803,1808 ----
***************
*** 2069,2075 ****
         ((and require-match
  	     (not (if ido-directory-too-big
  		      (file-exists-p (concat ido-current-directory ido-final-text))
! 		    (ido-existing-item-p))))
  	(error "Must specify valid item"))
  
         (t
--- 2065,2075 ----
         ((and require-match
  	     (not (if ido-directory-too-big
  		      (file-exists-p (concat ido-current-directory ido-final-text))
! 		    (ido-existing-item-p)))
! 	     (cond
! 	      ((memq require-match '(confirm confirm-after-completion))
! 	       (not (y-or-n-p (format "Create '%s'? " ido-final-text))))
! 	      (t t)))
  	(error "Must specify valid item"))
  
         (t
***************
*** 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
--- 2158,2166 ----
  	   (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)
  
--- 2197,2208 ----
  	  (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
--- 2311,2317 ----
  					    (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 ****
--- 2685,2691 ----
    "Exit minibuffer, but make sure we have a match if one is needed."
    (interactive)
    (if (and (or (not ido-require-match)
+ 	       (memq ido-require-match '(confirm confirm-after-completion))
                 (ido-existing-item-p))
             (not ido-incomplete-regexp))
        (exit-minibuffer)))


-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk





  reply	other threads:[~2009-05-07 11:38 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 [this message]
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
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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87prel16ud.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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.