diff options
| author | Stefan Monnier | 2009-11-12 22:37:58 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2009-11-12 22:37:58 +0000 |
| commit | 054049883d9f0ea3e184ffd4a661a8f96eea9863 (patch) | |
| tree | b14addb188ddd33b8f1809e3623ec487b61a1344 /lisp | |
| parent | 5297bc10b012e75d28d18b73880ad0e2e01cb57c (diff) | |
| download | emacs-054049883d9f0ea3e184ffd4a661a8f96eea9863.tar.gz emacs-054049883d9f0ea3e184ffd4a661a8f96eea9863.zip | |
(dired-save-positions, dired-restore-positions): New funs.
(dired-revert): Use them (bug#4880).
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/dired.el | 26 |
2 files changed, 26 insertions, 5 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 71dcce97720..07e32b29227 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2009-11-12 Per Starbäck <per@starback.se> (tiny change) | ||
| 2 | |||
| 3 | * dired.el (dired-save-positions, dired-restore-positions): New funs. | ||
| 4 | (dired-revert): Use them (bug#4880). | ||
| 5 | |||
| 1 | 2009-11-12 Dan Nicolaescu <dann@ics.uci.edu> | 6 | 2009-11-12 Dan Nicolaescu <dann@ics.uci.edu> |
| 2 | 7 | ||
| 3 | * tooltip.el (tooltip-frame-parameters): Undo previous change. | 8 | * tooltip.el (tooltip-frame-parameters): Undo previous change. |
diff --git a/lisp/dired.el b/lisp/dired.el index 9e2c65c5c47..cf78354ad8f 100644 --- a/lisp/dired.el +++ b/lisp/dired.el | |||
| @@ -1104,8 +1104,7 @@ Should not fail even on completely garbaged buffers. | |||
| 1104 | Preserves old cursor, marks/flags, hidden-p." | 1104 | Preserves old cursor, marks/flags, hidden-p." |
| 1105 | (widen) ; just in case user narrowed | 1105 | (widen) ; just in case user narrowed |
| 1106 | (let ((modflag (buffer-modified-p)) | 1106 | (let ((modflag (buffer-modified-p)) |
| 1107 | (opoint (point)) | 1107 | (positions (dired-save-positions)) |
| 1108 | (ofile (dired-get-filename nil t)) | ||
| 1109 | (mark-alist nil) ; save marked files | 1108 | (mark-alist nil) ; save marked files |
| 1110 | (hidden-subdirs (dired-remember-hidden)) | 1109 | (hidden-subdirs (dired-remember-hidden)) |
| 1111 | (old-subdir-alist (cdr (reverse dired-subdir-alist))) ; except pwd | 1110 | (old-subdir-alist (cdr (reverse dired-subdir-alist))) ; except pwd |
| @@ -1125,9 +1124,7 @@ Preserves old cursor, marks/flags, hidden-p." | |||
| 1125 | ;; ... run the hook for the whole buffer, and only after markers | 1124 | ;; ... run the hook for the whole buffer, and only after markers |
| 1126 | ;; have been reinserted (else omitting in dired-x would omit marked files) | 1125 | ;; have been reinserted (else omitting in dired-x would omit marked files) |
| 1127 | (run-hooks 'dired-after-readin-hook) ; no need to narrow | 1126 | (run-hooks 'dired-after-readin-hook) ; no need to narrow |
| 1128 | (or (and ofile (dired-goto-file ofile)) ; move cursor to where it | 1127 | (dired-restore-positions positions) |
| 1129 | (goto-char opoint)) ; was before | ||
| 1130 | (dired-move-to-filename) | ||
| 1131 | (save-excursion ; hide subdirs that were hidden | 1128 | (save-excursion ; hide subdirs that were hidden |
| 1132 | (dolist (dir hidden-subdirs) | 1129 | (dolist (dir hidden-subdirs) |
| 1133 | (if (dired-goto-subdir dir) | 1130 | (if (dired-goto-subdir dir) |
| @@ -1141,6 +1138,25 @@ Preserves old cursor, marks/flags, hidden-p." | |||
| 1141 | ;; Subroutines of dired-revert | 1138 | ;; Subroutines of dired-revert |
| 1142 | ;; Some of these are also used when inserting subdirs. | 1139 | ;; Some of these are also used when inserting subdirs. |
| 1143 | 1140 | ||
| 1141 | (defun dired-save-positions () | ||
| 1142 | "Return the current positions in all windows displaying this dired buffer. | ||
| 1143 | The positions have the form (WINDOW FILENAME POINT)." | ||
| 1144 | (mapcar (lambda (w) | ||
| 1145 | (list w | ||
| 1146 | (with-selected-window w | ||
| 1147 | (dired-get-filename nil t)) | ||
| 1148 | (window-point w))) | ||
| 1149 | (get-buffer-window-list nil 0 t))) | ||
| 1150 | |||
| 1151 | (defun dired-restore-positions (positions) | ||
| 1152 | "Restore POSITIONS saved with `dired-save-positions'." | ||
| 1153 | (dolist (win-file-pos positions) | ||
| 1154 | (with-selected-window (car win-file-pos) | ||
| 1155 | (unless (and (nth 1 win-file-pos) | ||
| 1156 | (dired-goto-file (nth 1 win-file-pos))) | ||
| 1157 | (goto-char (nth 2 win-file-pos)) | ||
| 1158 | (dired-move-to-filename))))) | ||
| 1159 | |||
| 1144 | (defun dired-remember-marks (beg end) | 1160 | (defun dired-remember-marks (beg end) |
| 1145 | "Return alist of files and their marks, from BEG to END." | 1161 | "Return alist of files and their marks, from BEG to END." |
| 1146 | (if selective-display ; must unhide to make this work. | 1162 | (if selective-display ; must unhide to make this work. |