changeset 69213:d836c61e53c9

(speedbar-update-localized-contents): Try to preserve window-start. (speedbar-update-directory-contents): Try to preserve window-start and window-point. (speedbar-update-special-contents): Don't move back to start of window.
author Nick Roberts <nickrob@snap.net.nz>
date Tue, 28 Feb 2006 21:51:39 +0000
parents 16877a343711
children 092d8fdb26e2
files lisp/speedbar.el
diffstat 1 files changed, 20 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/speedbar.el	Tue Feb 28 21:47:19 2006 +0000
+++ b/lisp/speedbar.el	Tue Feb 28 21:51:39 2006 +0000
@@ -2534,20 +2534,19 @@
 	(set-buffer speedbar-buffer)
 	(speedbar-with-writable
 	  (let* ((window (get-buffer-window speedbar-buffer 0))
-		 (p (window-point window)))
+		 (p (window-point window))
+		 (start (window-start window)))
 	    (erase-buffer)
 	    (dolist (func funclst)
 	      (setq default-directory cbd)
 	      (funcall func cbd 0))
 	    (speedbar-reconfigure-keymaps)
-	    (set-window-point window p)))
+	    (set-window-point window p)
+	    (set-window-start window start)))
 	))))
 
 (defun speedbar-update-directory-contents ()
   "Update the contents of the speedbar buffer based on the current directory."
-
-  (save-excursion
-
     (let ((cbd (expand-file-name default-directory))
 	  cbd-parent
 	  (funclst (speedbar-initial-expansion-list))
@@ -2608,17 +2607,21 @@
 		 (speedbar-directory-line cbd))
 	    ;; Open it.
 	    (speedbar-expand-line)
-	  (erase-buffer)
-	  (cond (use-cache
-		 (setq default-directory
-		       (nth (1- (length speedbar-shown-directories))
-			    speedbar-shown-directories))
-		 (insert (cdr cache)))
-		(t
-	  (dolist (func funclst)
-	    (setq default-directory cbd)
-	    (funcall func cbd 0)))))
-	(goto-char (point-min)))))
+	  (let* ((window (get-buffer-window speedbar-buffer 0))
+		 (p (window-point window))
+		 (start (window-start window)))
+	    (erase-buffer)
+	    (cond (use-cache
+		   (setq default-directory
+			 (nth (1- (length speedbar-shown-directories))
+			      speedbar-shown-directories))
+		   (insert (cdr cache)))
+		  (t
+		   (dolist (func funclst)
+		     (setq default-directory cbd)
+	    (funcall func cbd 0))))
+	    (set-window-point window p)
+	    (set-window-start window start)))))
   (speedbar-reconfigure-keymaps))
 
 (defun speedbar-update-special-contents ()
@@ -2643,8 +2646,7 @@
 	  (dolist (func funclst)
 	    ;; We do not erase the buffer because these functions may
 	    ;; decide NOT to update themselves.
-	    (funcall func specialbuff)))
-      (goto-char (point-min))))
+	    (funcall func specialbuff)))))
   (speedbar-reconfigure-keymaps))
 
 (defun speedbar-set-timer (timeout)