changeset 80419:9c783b1fabda

(find-dired-filter): Align columns by padding file sizes.
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 01 Apr 2008 16:48:24 +0000
parents dd8c2bff893f
children 3b1f5a54fc5d
files lisp/find-dired.el
diffstat 1 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/find-dired.el	Tue Apr 01 16:48:04 2008 +0000
+++ b/lisp/find-dired.el	Tue Apr 01 16:48:24 2008 +0000
@@ -239,7 +239,11 @@
 (defun find-dired-filter (proc string)
   ;; Filter for \\[find-dired] processes.
   (let ((buf (process-buffer proc))
-	(inhibit-read-only t))
+	(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)
@@ -262,6 +266,12 @@
 		(goto-char (- end 3))	; no error if < 0
 		(while (search-forward " ./" nil t)
 		  (delete-region (point) (- (point) 2)))
+		;; Make output line up by padding the file size
+		(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)))
 		;; Find all the complete lines in the unprocessed
 		;; output and process it to add text properties.
 		(goto-char (point-max))
@@ -269,8 +279,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))))