emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: IDO doesn't honor confirm-nonexistent-file-or-buffer


From: Kim F. Storm
Subject: Re: IDO doesn't honor confirm-nonexistent-file-or-buffer
Date: Thu, 07 May 2009 13:38:02 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.92 (gnu/linux)

Tassilo Horn <address@hidden> 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 <address@hidden> http://www.cua.dk





reply via email to

[Prev in Thread] Current Thread [Next in Thread]