diff options
| author | Michael Heerdegen | 2012-10-17 11:11:49 +0200 |
|---|---|---|
| committer | Martin Rudalics | 2012-10-17 11:11:49 +0200 |
| commit | 7ebc5f5a07b71eada164b9e115eb40a2c03b0f95 (patch) | |
| tree | 25d416175d9b2546ab677cd511adaba6fd27dddc | |
| parent | d556ebf9b8a36596d752e284d227173c852d4eb8 (diff) | |
| download | emacs-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/ChangeLog | 7 | ||||
| -rw-r--r-- | lisp/wdired.el | 16 |
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 @@ | |||
| 1 | 2012-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 | |||
| 1 | 2012-10-16 Juri Linkov <juri@jurta.org> | 8 | 2012-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 | ||