emacs-devel
[Top][All Lists]
Advanced

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

Re: wdired-change-to-wdired-mode needs a key binding in dired-mode


From: Juri Linkov
Subject: Re: wdired-change-to-wdired-mode needs a key binding in dired-mode
Date: Fri, 27 Jul 2007 23:59:48 +0300
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1.50 (gnu/linux)

>     Now, what should C-x C-q do in wdired mode?
>     How about this:
>
>     if not buffer-modified-p
>        switch back to dired-mode
>     else
>        print a warning that the user needs to either save her changes or
>        cancel them
>
> I prefer the later suggestion to ask whether to save or cancel them.

The following patch implements this:

Index: lisp/wdired.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/wdired.el,v
retrieving revision 1.26
diff -c -r1.26 wdired.el
*** lisp/wdired.el      26 Jul 2007 05:26:37 -0000      1.26
--- lisp/wdired.el      27 Jul 2007 20:54:57 -0000
***************
*** 175,180 ****
--- 175,181 ----
      (define-key map "\C-c\C-c" 'wdired-finish-edit)
      (define-key map "\C-c\C-k" 'wdired-abort-changes)
      (define-key map "\C-c\C-[" 'wdired-abort-changes)
+     (define-key map "\C-x\C-q" 'wdired-exit)
      (define-key map "\C-m"     'ignore)
      (define-key map "\C-j"     'ignore)
      (define-key map "\C-o"     'ignore)
***************
*** 423,428 ****
--- 424,445 ----
    (set-buffer-modified-p nil)
    (setq buffer-undo-list nil))
  
+ (defun wdired-exit ()
+   "Exit wdired and return to dired mode.
+ Just return to dired mode if there are no changes.  Otherwise,
+ ask a yes-or-no question whether to save or cancel changes,
+ and proceed depending on the answer."
+   (interactive)
+   (if (buffer-modified-p)
+       (if (y-or-n-p (format "Buffer %s modified; save changes? "
+                           (current-buffer)))
+         (wdired-finish-edit)
+       (wdired-abort-changes))
+     (wdired-change-to-dired-mode)
+     (set-buffer-modified-p nil)
+     (setq buffer-undo-list nil)
+     (message "(No changes need to be saved)")))
+ 
  ;; Rename a file, searching it in a modified dired buffer, in order
  ;; to be able to use `dired-do-create-files-regexp' and get its
  ;; "benefits".

-- 
Juri Linkov
http://www.jurta.org/emacs/




reply via email to

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