emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/find-dired.el, v [EMACS_22_BASE]


From: Chong Yidong
Subject: [Emacs-diffs] Changes to emacs/lisp/find-dired.el, v [EMACS_22_BASE]
Date: Tue, 01 Apr 2008 17:28:27 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Branch:         EMACS_22_BASE
Changes by:     Chong Yidong <cyd>      08/04/01 17:28:26

Index: find-dired.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/find-dired.el,v
retrieving revision 1.55.2.5
retrieving revision 1.55.2.6
diff -u -b -r1.55.2.5 -r1.55.2.6
--- find-dired.el       1 Apr 2008 16:48:24 -0000       1.55.2.5
+++ find-dired.el       1 Apr 2008 17:28:26 -0000       1.55.2.6
@@ -239,22 +239,21 @@
 (defun find-dired-filter (proc string)
   ;; Filter for \\[find-dired] processes.
   (let ((buf (process-buffer proc))
-       (inhibit-read-only t)
-       (l-opt (and (consp find-ls-option)
-                   (string-match "l" (cdr find-ls-option))))
-       (size-regexp
-        "^ +[^ \t\r\n]+ +[^ \t\r\n]+ +[^ \t\r\n]+ +[^ \t\r\n]+ +\\([0-9]+\\)"))
-    (if (buffer-name buf)              ; not killed?
-       (save-excursion
-         (set-buffer buf)
+       (inhibit-read-only t))
+    (if (buffer-name buf)
+       (with-current-buffer buf
          (save-restriction
            (widen)
-           (save-excursion
              (let ((buffer-read-only nil)
-                   (end (point-max)))
-               (goto-char end)
+                 (beg (point-max))
+                 (l-opt (and (consp find-ls-option)
+                             (string-match "l" (cdr find-ls-option))))
+                 (links-regexp "^ +[^ \t\r\n]+\\( +[^ \t\r\n]+\\)")
+                 (size-regexp
+                  "^ +[^ \t\r\n]+ +[^ \t\r\n]+ +[^ \t\r\n]+ +[^ \t\r\n]+\\( 
+[0-9]+\\)"))
+             (goto-char beg)
                (insert string)
-               (goto-char end)
+             (goto-char beg)
                (or (looking-at "^")
                    (forward-line 1))
                (while (looking-at "^")
@@ -263,15 +262,25 @@
                ;; 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 (- end 3))   ; no error if < 0
+             (goto-char (- beg 3))     ; no error if < 0
                (while (search-forward " ./" nil t)
                  (delete-region (point) (- (point) 2)))
-               ;; Make output line up by padding the file size
+             ;; 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 (- end 3))
-                 (when (re-search-forward size-regexp nil t)
-                   (replace-match (format "%10s" (match-string 1))
-                                  nil nil nil 1)))
+               (goto-char beg)
+               (goto-char (line-beginning-position))
+               (while (re-search-forward links-regexp nil t)
+                 (replace-match (format "%4s" (match-string 1))
+                                nil nil nil 1)
+                 (forward-line 1))
+               (goto-char beg)
+               (goto-char (line-beginning-position))
+               (while (re-search-forward size-regexp nil t)
+                 (replace-match (format "%9s" (match-string 1))
+                                nil nil nil 1)
+                 (forward-line 1)))
                ;; Find all the complete lines in the unprocessed
                ;; output and process it to add text properties.
                (goto-char (point-max))
@@ -279,7 +288,7 @@
                    (progn
                      (dired-insert-set-properties (process-mark proc)
                                                   (1+ (point)))
-                     (move-marker (process-mark proc) (1+ (point)))))))))
+                   (move-marker (process-mark proc) (1+ (point))))))))
       ;; The buffer has been killed.
       (delete-process proc))))
 




reply via email to

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