aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Heerdegen2012-10-17 11:11:49 +0200
committerMartin Rudalics2012-10-17 11:11:49 +0200
commit7ebc5f5a07b71eada164b9e115eb40a2c03b0f95 (patch)
tree25d416175d9b2546ab677cd511adaba6fd27dddc
parentd556ebf9b8a36596d752e284d227173c852d4eb8 (diff)
downloademacs-7ebc5f5a07b71eada164b9e115eb40a2c03b0f95.tar.gz
emacs-7ebc5f5a07b71eada164b9e115eb40a2c03b0f95.zip
When renaming a file with wdired move point with file and don't lose mark status (Bug#11795).
* wdired.el (wdired-old-marks): New variable. (wdired-change-to-wdired-mode): Locally set wdired-old-marks. (wdired-do-renames): Move point with renamed file and don't lose mark status (Bug#11795).
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/wdired.el16
2 files changed, 19 insertions, 4 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 437f8d57c9a..5a5549332ac 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
12012-10-17 Michael Heerdegen <michael_heerdegen@web.de> (tiny change)
2
3 * wdired.el (wdired-old-marks): New variable.
4 (wdired-change-to-wdired-mode): Locally set wdired-old-marks.
5 (wdired-do-renames): Move point with renamed file and don't lose
6 mark status (Bug#11795).
7
12012-10-16 Juri Linkov <juri@jurta.org> 82012-10-16 Juri Linkov <juri@jurta.org>
2 9
3 * replace.el (query-replace-help): Mention multi-buffer replacement 10 * replace.el (query-replace-help): Mention multi-buffer replacement
diff --git a/lisp/wdired.el b/lisp/wdired.el
index b893e8f6f2b..266d1993389 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -180,7 +180,7 @@ program `dired-chmod-program', which must exist."
180(defvar wdired-col-perm) ;; Column where the permission bits start 180(defvar wdired-col-perm) ;; Column where the permission bits start
181(defvar wdired-old-content) 181(defvar wdired-old-content)
182(defvar wdired-old-point) 182(defvar wdired-old-point)
183 183(defvar wdired-old-marks)
184 184
185(defun wdired-mode () 185(defun wdired-mode ()
186 "Writable Dired (WDired) mode. 186 "Writable Dired (WDired) mode.
@@ -221,6 +221,8 @@ See `wdired-mode'."
221 (error "Not a Dired buffer")) 221 (error "Not a Dired buffer"))
222 (set (make-local-variable 'wdired-old-content) 222 (set (make-local-variable 'wdired-old-content)
223 (buffer-substring (point-min) (point-max))) 223 (buffer-substring (point-min) (point-max)))
224 (set (make-local-variable 'wdired-old-marks)
225 (dired-remember-marks (point-min) (point-max)))
224 (set (make-local-variable 'wdired-old-point) (point)) 226 (set (make-local-variable 'wdired-old-point) (point))
225 (set (make-local-variable 'query-replace-skip-read-only) t) 227 (set (make-local-variable 'query-replace-skip-read-only) t)
226 (set (make-local-variable 'isearch-filter-predicate) 228 (set (make-local-variable 'isearch-filter-predicate)
@@ -455,7 +457,8 @@ non-nil means return old filename."
455 (push (cons tmp file-new) residue)))) 457 (push (cons tmp file-new) residue))))
456 (t 458 (t
457 (setq progress t) 459 (setq progress t)
458 (let ((file-ori (car rename))) 460 (let* ((file-ori (car rename))
461 (old-mark (cdr (assoc file-ori wdired-old-marks))))
459 (if wdired-use-interactive-rename 462 (if wdired-use-interactive-rename
460 (wdired-search-and-rename file-ori file-new) 463 (wdired-search-and-rename file-ori file-new)
461 ;; If dired-rename-file autoloads dired-aux while 464 ;; If dired-rename-file autoloads dired-aux while
@@ -466,12 +469,17 @@ non-nil means return old filename."
466 (condition-case err 469 (condition-case err
467 (let ((dired-backup-overwrite nil)) 470 (let ((dired-backup-overwrite nil))
468 (dired-rename-file file-ori file-new 471 (dired-rename-file file-ori file-new
469 overwrite)) 472 overwrite)
473 (dired-remove-file file-ori)
474 (dired-add-file file-new (if (integerp dired-keep-marker-rename)
475 dired-keep-marker-rename
476 old-mark)))
470 (error 477 (error
471 (setq errors (1+ errors)) 478 (setq errors (1+ errors))
472 (dired-log (concat "Rename `" file-ori "' to `" 479 (dired-log (concat "Rename `" file-ori "' to `"
473 file-new "' failed:\n%s\n") 480 file-new "' failed:\n%s\n")
474 err))))))))) 481 err)
482 (dired-add-entry file-ori old-mark)))))))))
475 errors)) 483 errors))
476 484
477 485