[Top][All Lists]
[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))))