]> git.eshelyaron.com Git - emacs.git/commitdiff
(wdired-exit): New function.
authorJuri Linkov <juri@jurta.org>
Sun, 29 Jul 2007 09:17:30 +0000 (09:17 +0000)
committerJuri Linkov <juri@jurta.org>
Sun, 29 Jul 2007 09:17:30 +0000 (09:17 +0000)
(wdired-mode-map): Bind C-x C-q to wdired-exit.

lisp/wdired.el

index 0abb8647ce029c8fe99afbc5051d5d311a690635..960d89909835d7cadd6be42ab7c3bf2b90a9ef10 100644 (file)
@@ -175,6 +175,7 @@ program `dired-chmod-program', which must exist."
     (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,6 +424,22 @@ non-nil means return old filename."
   (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".