aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorStefan Monnier2009-11-12 22:37:58 +0000
committerStefan Monnier2009-11-12 22:37:58 +0000
commit054049883d9f0ea3e184ffd4a661a8f96eea9863 (patch)
treeb14addb188ddd33b8f1809e3623ec487b61a1344 /lisp
parent5297bc10b012e75d28d18b73880ad0e2e01cb57c (diff)
downloademacs-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/ChangeLog5
-rw-r--r--lisp/dired.el26
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 @@
12009-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
12009-11-12 Dan Nicolaescu <dann@ics.uci.edu> 62009-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.
1104Preserves old cursor, marks/flags, hidden-p." 1104Preserves 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.
1143The 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.