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


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

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Chong Yidong <cyd>      08/04/01 17:34:20

Index: find-dired.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/find-dired.el,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -b -r1.59 -r1.60
--- find-dired.el       8 Jan 2008 20:44:52 -0000       1.59
+++ find-dired.el       1 Apr 2008 17:34:20 -0000       1.60
@@ -240,17 +240,19 @@
   ;; Filter for \\[find-dired] processes.
   (let ((buf (process-buffer proc))
        (inhibit-read-only t))
-    (if (buffer-name buf)              ; not killed?
-       (save-excursion
-         (set-buffer buf)
+    (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))))
+                 (ls-regexp (concat "^ +[^ \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 "^")
@@ -259,9 +261,21 @@
                ;; 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)))
+             ;; 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))
@@ -269,8 +283,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]