changeset 68942:cb07d3843e81

(speedbar-frame-width): Make an inline function instead of a macro. Use frame-width. (speedbar-try-completion, speedbar-update-contents) (speedbar-timer-fn): Use consp. (speedbar-update-localized-contents): Try to preserve point.
author Nick Roberts <nickrob@snap.net.nz>
date Fri, 17 Feb 2006 00:26:14 +0000
parents b41d1af1839d
children 09f294c6700a
files lisp/speedbar.el
diffstat 1 files changed, 13 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/speedbar.el	Fri Feb 17 00:25:16 2006 +0000
+++ b/lisp/speedbar.el	Fri Feb 17 00:26:14 2006 +0000
@@ -1019,10 +1019,10 @@
 		    (lambda () (let ((speedbar-update-flag t))
 				 (speedbar-timer-fn)))))
 
-(defmacro speedbar-frame-width ()
+(defsubst speedbar-frame-width ()
   "Return the width of the speedbar frame in characters.
 nil if it doesn't exist."
-  '(window-width (get-buffer-window speedbar-buffer)))
+  (frame-width speedbar-frame))
 
 (defun speedbar-mode ()
   "Major mode for managing a display of directories and tags.
@@ -2123,7 +2123,7 @@
   "A wrapper for `try-completion'.
 Passes STRING and ALIST to `try-completion' if ALIST
 passes some tests."
-  (if (and (listp alist) (not (null alist))
+  (if (and (consp alist)
 	   (listp (car alist)) (stringp (car (car alist))))
       (try-completion string alist)
     nil))
@@ -2423,8 +2423,7 @@
 
   ;; Choose the correct method of doodling.
   (if (and speedbar-mode-specific-contents-flag
-	   (listp speedbar-special-mode-expansion-list)
-	   speedbar-special-mode-expansion-list
+	   (consp speedbar-special-mode-expansion-list)
 	   (local-variable-p
 	    'speedbar-special-mode-expansion-list
 	    (current-buffer)))
@@ -2463,12 +2462,14 @@
 	    )
 	(set-buffer speedbar-buffer)
 	(speedbar-with-writable
-	  (erase-buffer)
-	  (dolist (func funclst)
-	    (setq default-directory cbd)
-	    (funcall func cbd 0))
-	(speedbar-reconfigure-keymaps)
-	(goto-char (point-min)))
+	  (let* ((window (get-buffer-window speedbar-buffer 0))
+		 (p (window-point window)))
+	    (erase-buffer)
+	    (dolist (func funclst)
+	      (setq default-directory cbd)
+	      (funcall func cbd 0))
+	    (speedbar-reconfigure-keymaps)
+	    (set-window-point window p)))
 	))))
 
 (defun speedbar-update-directory-contents ()
@@ -2572,7 +2573,6 @@
 	    ;; We do not erase the buffer because these functions may
 	    ;; decide NOT to update themselves.
 	    (funcall func specialbuff)))
-
       (goto-char (point-min))))
   (speedbar-reconfigure-keymaps))
 
@@ -2614,8 +2614,7 @@
 		(speedbar-maybe-add-localized-support (current-buffer))
 		;; Update for special mode all the time!
 		(if (and speedbar-mode-specific-contents-flag
-			 (listp speedbar-special-mode-expansion-list)
-			 speedbar-special-mode-expansion-list
+			 (consp speedbar-special-mode-expansion-list)
 			 (local-variable-p
 			  'speedbar-special-mode-expansion-list
 			  (current-buffer)))