842 |
;; line, the alignment if this line w.r.t the rest is messed up because |
;; line, the alignment if this line w.r.t the rest is messed up because |
843 |
;; the fields of that one line will generally be smaller. |
;; the fields of that one line will generally be smaller. |
844 |
;; |
;; |
845 |
;; To work around this problem, we here add spaces to try and re-align the |
;; To work around this problem, we here add spaces to try and |
846 |
;; fields as needed. Since this is purely aesthetic, it is of utmost |
;; re-align the fields as needed. Since this is purely aesthetic, |
847 |
;; importance that it doesn't mess up anything like |
;; it is of utmost importance that it doesn't mess up anything like |
848 |
;; `dired-move-to-filename'. To this end, we limit ourselves to adding |
;; `dired-move-to-filename'. To this end, we limit ourselves to |
849 |
;; spaces only, and to only add them at places where there was already at |
;; adding spaces only, and to only add them at places where there |
850 |
;; least one space. This way, as long as `dired-move-to-filename-regexp' |
;; was already at least one space. This way, as long as |
851 |
;; always matches spaces with "*" or "+", we know we haven't made anything |
;; `directory-listing-before-filename-regexp' always matches spaces |
852 |
;; worse. There is one spot where the exact number of spaces is |
;; with "*" or "+", we know we haven't made anything worse. There |
853 |
;; important, which is just before the actual filename, so we refrain from |
;; is one spot where the exact number of spaces is important, which |
854 |
;; adding spaces there (and within the filename as well, of course). |
;; is just before the actual filename, so we refrain from adding |
855 |
|
;; spaces there (and within the filename as well, of course). |
856 |
(save-excursion |
(save-excursion |
857 |
(let (file file-col other other-col) |
(let (file file-col other other-col) |
858 |
;; Check the there is indeed a file, and that there is anoter adjacent |
;; Check the there is indeed a file, and that there is anoter adjacent |
954 |
(setq switches (concat "--dired " switches))) |
(setq switches (concat "--dired " switches))) |
955 |
;; We used to specify the C locale here, to force English month names; |
;; We used to specify the C locale here, to force English month names; |
956 |
;; but this should not be necessary any more, |
;; but this should not be necessary any more, |
957 |
;; with the new value of dired-move-to-filename-regexp. |
;; with the new value of `directory-listing-before-filename-regexp'. |
958 |
(if file-list |
(if file-list |
959 |
(dolist (f file-list) |
(dolist (f file-list) |
960 |
(let ((beg (point))) |
(let ((beg (point))) |
1838 |
|
|
1839 |
;;; Functions for finding the file name in a dired buffer line. |
;;; Functions for finding the file name in a dired buffer line. |
1840 |
|
|
|
(defvar dired-move-to-filename-regexp |
|
|
(let* ((l "\\([A-Za-z]\\|[^\0-\177]\\)") |
|
|
(l-or-quote "\\([A-Za-z']\\|[^\0-\177]\\)") |
|
|
;; In some locales, month abbreviations are as short as 2 letters, |
|
|
;; and they can be followed by ".". |
|
|
;; In Breton, a month name can include a quote character. |
|
|
(month (concat l-or-quote l-or-quote "+\\.?")) |
|
|
(s " ") |
|
|
(yyyy "[0-9][0-9][0-9][0-9]") |
|
|
(dd "[ 0-3][0-9]") |
|
|
(HH:MM "[ 0-2][0-9][:.][0-5][0-9]") |
|
|
(seconds "[0-6][0-9]\\([.,][0-9]+\\)?") |
|
|
(zone "[-+][0-2][0-9][0-5][0-9]") |
|
|
(iso-mm-dd "[01][0-9]-[0-3][0-9]") |
|
|
(iso-time (concat HH:MM "\\(:" seconds "\\( ?" zone "\\)?\\)?")) |
|
|
(iso (concat "\\(\\(" yyyy "-\\)?" iso-mm-dd "[ T]" iso-time |
|
|
"\\|" yyyy "-" iso-mm-dd "\\)")) |
|
|
(western (concat "\\(" month s "+" dd "\\|" dd "\\.?" s month "\\)" |
|
|
s "+" |
|
|
"\\(" HH:MM "\\|" yyyy "\\)")) |
|
|
(western-comma (concat month s "+" dd "," s "+" yyyy)) |
|
|
;; Japanese MS-Windows ls-lisp has one-digit months, and |
|
|
;; omits the Kanji characters after month and day-of-month. |
|
|
;; On Mac OS X 10.3, the date format in East Asian locales is |
|
|
;; day-of-month digits followed by month digits. |
|
|
(mm "[ 0-1]?[0-9]") |
|
|
(east-asian |
|
|
(concat "\\(" mm l "?" s dd l "?" s "+" |
|
|
"\\|" dd s mm s "+" "\\)" |
|
|
"\\(" HH:MM "\\|" yyyy l "?" "\\)"))) |
|
|
;; The "[0-9]" below requires the previous column to end in a digit. |
|
|
;; This avoids recognizing `1 may 1997' as a date in the line: |
|
|
;; -r--r--r-- 1 may 1997 1168 Oct 19 16:49 README |
|
|
;; The "[BkKMGTPEZY]?" below supports "ls -alh" output. |
|
|
;; The ".*" below finds the last match if there are multiple matches. |
|
|
;; This avoids recognizing `jservice 10 1024' as a date in the line: |
|
|
;; drwxr-xr-x 3 jservice 10 1024 Jul 2 1997 esg-host |
|
|
(concat ".*[0-9][BkKMGTPEZY]?" s |
|
|
"\\(" western "\\|" western-comma "\\|" east-asian "\\|" iso "\\)" |
|
|
s "+")) |
|
|
"Regular expression to match up to the file name in a directory listing. |
|
|
The default value is designed to recognize dates and times |
|
|
regardless of the language.") |
|
|
|
|
1841 |
(defvar dired-permission-flags-regexp |
(defvar dired-permission-flags-regexp |
1842 |
"\\([^ ]\\)[-r][-w]\\([^ ]\\)[-r][-w]\\([^ ]\\)[-r][-w]\\([^ ]\\)" |
"\\([^ ]\\)[-r][-w]\\([^ ]\\)[-r][-w]\\([^ ]\\)[-r][-w]\\([^ ]\\)" |
1843 |
"Regular expression to match the permission flags in `ls -l'.") |
"Regular expression to match the permission flags in `ls -l'.") |
1855 |
(cond |
(cond |
1856 |
((and change (< change eol)) |
((and change (< change eol)) |
1857 |
(goto-char change)) |
(goto-char change)) |
1858 |
((re-search-forward dired-move-to-filename-regexp eol t) |
((re-search-forward directory-listing-before-filename-regexp eol t) |
1859 |
(goto-char (match-end 0))) |
(goto-char (match-end 0))) |
1860 |
((re-search-forward dired-permission-flags-regexp eol t) |
((re-search-forward dired-permission-flags-regexp eol t) |
1861 |
;; Ha! There *is* a file. Our regexp-from-hell just failed to find it. |
;; Ha! There *is* a file. Our regexp-from-hell just failed to find it. |
1862 |
(if raise-error |
(if raise-error |
1863 |
(error "Unrecognized line! Check dired-move-to-filename-regexp")) |
(error "Unrecognized line! Check directory-listing-before-filename-regexp")) |
1864 |
(beginning-of-line) |
(beginning-of-line) |
1865 |
nil) |
nil) |
1866 |
(raise-error |
(raise-error |