changeset 96410:56e9179abfbe

(find-dired-filter): Preserve point.
author Andreas Schwab <schwab@suse.de>
date Sun, 29 Jun 2008 08:10:56 +0000
parents 5ef5228e0e13
children 31e595cb6c02
files lisp/ChangeLog lisp/find-dired.el
diffstat 2 files changed, 46 insertions(+), 41 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Jun 29 03:06:12 2008 +0000
+++ b/lisp/ChangeLog	Sun Jun 29 08:10:56 2008 +0000
@@ -1,3 +1,7 @@
+2008-06-29  Andreas Schwab  <schwab@suse.de>
+
+	* find-dired.el (find-dired-filter): Preserve point.
+
 2008-06-28  Juanma Barranquero  <lekktu@gmail.com>
 
 	* net/sasl.el (sasl-client-set-property, sasl-make-mechanism)
--- a/lisp/find-dired.el	Sun Jun 29 03:06:12 2008 +0000
+++ b/lisp/find-dired.el	Sun Jun 29 08:10:56 2008 +0000
@@ -240,48 +240,49 @@
 	(inhibit-read-only t))
     (if (buffer-name buf)
 	(with-current-buffer buf
-	  (save-restriction
-	    (widen)
-	    (let ((buffer-read-only nil)
-		  (beg (point-max))
-		  (l-opt (and (consp find-ls-option)
-			      (string-match "l" (cdr find-ls-option))))
-		  (ls-regexp (concat "^ +[^ \t\r\n]+\\( +[^ \t\r\n]+\\) +"
-				     "[^ \t\r\n]+ +[^ \t\r\n]+\\( +[0-9]+\\)")))
-	      (goto-char beg)
-	      (insert string)
-	      (goto-char beg)
-	      (or (looking-at "^")
+	  (save-excursion
+	    (save-restriction
+	      (widen)
+	      (let ((buffer-read-only nil)
+		    (beg (point-max))
+		    (l-opt (and (consp find-ls-option)
+				(string-match "l" (cdr find-ls-option))))
+		    (ls-regexp (concat "^ +[^ \t\r\n]+\\( +[^ \t\r\n]+\\) +"
+				       "[^ \t\r\n]+ +[^ \t\r\n]+\\( +[0-9]+\\)")))
+		(goto-char beg)
+		(insert string)
+		(goto-char beg)
+		(or (looking-at "^")
+		    (forward-line 1))
+		(while (looking-at "^")
+		  (insert "  ")
 		  (forward-line 1))
-	      (while (looking-at "^")
-		(insert "  ")
-		(forward-line 1))
-	      ;; Convert ` ./FILE' to ` FILE'
-	      ;; This would lose if the current chunk of output
-	      ;; starts or ends within the ` ./', so back up a bit:
-	      (goto-char (- beg 3))	; no error if < 0
-	      (while (search-forward " ./" nil t)
-		(delete-region (point) (- (point) 2)))
-	      ;; Pad the number of links and file size.  This is a
-	      ;; quick and dirty way of getting the columns to line up
-	      ;; most of the time, but it's not foolproof.
-	      (when l-opt
-		(goto-char beg)
-		(goto-char (line-beginning-position))
-		(while (re-search-forward ls-regexp nil t)
-		  (replace-match (format "%4s" (match-string 1))
-				 nil nil nil 1)
-		  (replace-match (format "%9s" (match-string 2))
-				 nil nil nil 2)
-		  (forward-line 1)))
-	      ;; Find all the complete lines in the unprocessed
-	      ;; output and process it to add text properties.
-	      (goto-char (point-max))
-	      (if (search-backward "\n" (process-mark proc) t)
-		  (progn
-		    (dired-insert-set-properties (process-mark proc)
-						 (1+ (point)))
-		    (move-marker (process-mark proc) (1+ (point))))))))
+		;; Convert ` ./FILE' to ` FILE'
+		;; This would lose if the current chunk of output
+		;; starts or ends within the ` ./', so back up a bit:
+		(goto-char (- beg 3))	; no error if < 0
+		(while (search-forward " ./" nil t)
+		  (delete-region (point) (- (point) 2)))
+		;; Pad the number of links and file size.  This is a
+		;; quick and dirty way of getting the columns to line up
+		;; most of the time, but it's not foolproof.
+		(when l-opt
+		  (goto-char beg)
+		  (goto-char (line-beginning-position))
+		  (while (re-search-forward ls-regexp nil t)
+		    (replace-match (format "%4s" (match-string 1))
+				   nil nil nil 1)
+		    (replace-match (format "%9s" (match-string 2))
+				   nil nil nil 2)
+		    (forward-line 1)))
+		;; Find all the complete lines in the unprocessed
+		;; output and process it to add text properties.
+		(goto-char (point-max))
+		(if (search-backward "\n" (process-mark proc) t)
+		    (progn
+		      (dired-insert-set-properties (process-mark proc)
+						   (1+ (point)))
+		      (move-marker (process-mark proc) (1+ (point)))))))))
       ;; The buffer has been killed.
       (delete-process proc))))