(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]+\\( +[^[:space:]]+\\)")))
+ (beg (point-max)))
(goto-char beg)
(insert string)
(goto-char beg)
(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))