emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp ChangeLog dired.el


From: Stefan Monnier
Subject: [Emacs-diffs] emacs/lisp ChangeLog dired.el
Date: Thu, 12 Nov 2009 22:38:03 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Stefan Monnier <monnier>        09/11/12 22:38:02

Modified files:
        lisp           : ChangeLog dired.el 

Log message:
        (dired-save-positions, dired-restore-positions): New funs.
        (dired-revert): Use them (bug#4880).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.16610&r2=1.16611
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/dired.el?cvsroot=emacs&r1=1.440&r2=1.441

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.16610
retrieving revision 1.16611
diff -u -b -r1.16610 -r1.16611
--- ChangeLog   12 Nov 2009 12:37:47 -0000      1.16610
+++ ChangeLog   12 Nov 2009 22:37:58 -0000      1.16611
@@ -1,3 +1,8 @@
+2009-11-12  Per Starbäck  <address@hidden>  (tiny change)
+
+       * dired.el (dired-save-positions, dired-restore-positions): New funs.
+       (dired-revert): Use them (bug#4880).
+
 2009-11-12  Dan Nicolaescu  <address@hidden>
 
        * tooltip.el (tooltip-frame-parameters): Undo previous change.

Index: dired.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/dired.el,v
retrieving revision 1.440
retrieving revision 1.441
diff -u -b -r1.440 -r1.441
--- dired.el    11 Nov 2009 19:24:23 -0000      1.440
+++ dired.el    12 Nov 2009 22:38:02 -0000      1.441
@@ -1104,8 +1104,7 @@
 Preserves old cursor, marks/flags, hidden-p."
   (widen)                              ; just in case user narrowed
   (let ((modflag (buffer-modified-p))
-       (opoint (point))
-       (ofile (dired-get-filename nil t))
+       (positions (dired-save-positions))
        (mark-alist nil)                ; save marked files
        (hidden-subdirs (dired-remember-hidden))
        (old-subdir-alist (cdr (reverse dired-subdir-alist))) ; except pwd
@@ -1125,9 +1124,7 @@
     ;; ... run the hook for the whole buffer, and only after markers
     ;; have been reinserted (else omitting in dired-x would omit marked files)
     (run-hooks 'dired-after-readin-hook)       ; no need to narrow
-    (or (and ofile (dired-goto-file ofile)) ; move cursor to where it
-       (goto-char opoint))             ; was before
-    (dired-move-to-filename)
+    (dired-restore-positions positions)
     (save-excursion                    ; hide subdirs that were hidden
       (dolist (dir hidden-subdirs)
        (if (dired-goto-subdir dir)
@@ -1141,6 +1138,25 @@
 ;; Subroutines of dired-revert
 ;; Some of these are also used when inserting subdirs.
 
+(defun dired-save-positions ()
+  "Return the current positions in all windows displaying this dired buffer.
+The positions have the form (WINDOW FILENAME POINT)."
+  (mapcar (lambda (w)
+           (list w
+                 (with-selected-window w
+                   (dired-get-filename nil t))
+                 (window-point w)))
+         (get-buffer-window-list nil 0 t)))
+
+(defun dired-restore-positions (positions)
+  "Restore POSITIONS saved with `dired-save-positions'."
+  (dolist (win-file-pos positions)
+    (with-selected-window (car win-file-pos)
+      (unless (and (nth 1 win-file-pos)
+                  (dired-goto-file (nth 1 win-file-pos)))
+       (goto-char (nth 2 win-file-pos))
+       (dired-move-to-filename)))))
+
 (defun dired-remember-marks (beg end)
   "Return alist of files and their marks, from BEG to END."
   (if selective-display                        ; must unhide to make this work.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]