changeset 106377:10ceddf3698e

(try-expand-dabbrev-visible): Preserve point in the buffers visited. Remove redundant current-buffer-saving.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Thu, 03 Dec 2009 01:33:56 +0000
parents 642af15d3e89
children f7a46a812653
files lisp/ChangeLog lisp/hippie-exp.el
diffstat 2 files changed, 34 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed Dec 02 18:31:26 2009 +0000
+++ b/lisp/ChangeLog	Thu Dec 03 01:33:56 2009 +0000
@@ -1,3 +1,8 @@
+2009-12-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* hippie-exp.el (try-expand-dabbrev-visible): Preserve point in the
+	buffers visited.  Remove redundant current-buffer-saving.
+
 2009-12-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	Use completion-in-buffer and remove uses of dynamic scoping.
--- a/lisp/hippie-exp.el	Wed Dec 02 18:31:26 2009 +0000
+++ b/lisp/hippie-exp.el	Thu Dec 03 01:33:56 2009 +0000
@@ -80,8 +80,8 @@
 ;;      in all buffers (except the current).  (This may be a little
 ;;      slow, don't use it unless you are really fond of `hippie-expand'.)
 ;;    `try-expand-list' : Tries to expand the text back to the nearest
-;;      open delimiter, to a whole list from the buffer. Convenient for
-;;      example when writing lisp or TeX.
+;;      open delimiter, to a whole list from the buffer.  Convenient for
+;;      example when writing Lisp or TeX.
 ;;    `try-expand-list-all-buffers' : Like `try-expand-list' but searches
 ;;      in all buffers (except the current).
 ;;    `try-expand-dabbrev' : works exactly as dabbrev-expand (but of
@@ -116,7 +116,7 @@
 ;;  variable with all kinds of try-functions above, it might be an
 ;;  idea to use `make-hippie-expand-function' to construct different
 ;;  `hippie-expand'-like functions, with different try-lists and bound
-;;  to different keys. It is also possible to make
+;;  to different keys.  It is also possible to make
 ;;  `hippie-expand-try-functions-list' a buffer local variable, and
 ;;  let it depend on the mode (by setting it in the mode-hooks).
 ;;
@@ -928,7 +928,7 @@
 	  t))))
 
 (defun try-expand-dabbrev-all-buffers (old)
-  "Tries to expand word \"dynamically\", searching all other buffers.
+  "Try to expand word \"dynamically\", searching all other buffers.
 The argument OLD has to be nil the first call of this function, and t
 for subsequent calls (for further possible expansions of the same
 string).  It returns t if a new expansion is found, nil otherwise."
@@ -986,39 +986,37 @@
 for subsequent calls (for further possible expansions of the same
 string).  It returns t if a new expansion is found, nil otherwise."
   (let ((expansion ())
-	(buf (current-buffer))
 	(flag (if (frame-visible-p (window-frame (selected-window)))
 		  'visible t)))
-    (if (not old)
-	(progn
-	   (he-init-string (he-dabbrev-beg) (point))
-	   (setq he-search-window (selected-window))
-	   (set-marker he-search-loc
-		       (window-start he-search-window)
-		       (window-buffer he-search-window))))
+    (unless old
+      (he-init-string (he-dabbrev-beg) (point))
+      (setq he-search-window (selected-window))
+      (set-marker he-search-loc
+                  (window-start he-search-window)
+                  (window-buffer he-search-window)))
 
     (while (and (not (equal he-search-string ""))
-		(marker-position he-search-loc)
-		(not expansion))
+                (marker-position he-search-loc)
+                (not expansion))
       (with-current-buffer (marker-buffer he-search-loc)
-	(goto-char he-search-loc)
-	(setq expansion (he-dabbrev-search he-search-string ()
-					   (window-end he-search-window)))
-	(if (and expansion
-		 (eq (marker-buffer he-string-beg) (current-buffer))
-		 (eq (marker-position he-string-beg) (match-beginning 0)))
-	    (setq expansion (he-dabbrev-search he-search-string ()
-					       (window-end he-search-window))))
-	(set-marker he-search-loc (point) (current-buffer)))
-      (if (not expansion)
-	  (progn
-	    (setq he-search-window (next-window he-search-window nil flag))
-	    (if (eq he-search-window (selected-window))
-		(set-marker he-search-loc nil)
-	      (set-marker he-search-loc (window-start he-search-window)
-			  (window-buffer he-search-window))))))
+        (save-excursion
+          (goto-char he-search-loc)
+          (setq expansion (he-dabbrev-search he-search-string ()
+                                             (window-end he-search-window)))
+          (if (and expansion
+                   (eq (marker-buffer he-string-beg) (current-buffer))
+                   (eq (marker-position he-string-beg) (match-beginning 0)))
+              (setq expansion
+                    (he-dabbrev-search he-search-string ()
+                                       (window-end he-search-window))))
+          (set-marker he-search-loc (point) (current-buffer))))
+      (unless expansion
+        (setq he-search-window (next-window he-search-window nil flag))
+        (if (eq he-search-window (selected-window))
+            (set-marker he-search-loc nil)
+          (set-marker he-search-loc (window-start he-search-window)
+                      (window-buffer he-search-window)))))
 
-    (set-buffer buf)
     (if (not expansion)
 	(progn
 	  (if old (he-reset-string))