Mercurial > emacs
changeset 47507:d03e0c2bb52c
(dired-font-lock-keywords): Use regexp-opt.
(dired-move-to-filename): Better message when we fail to find the file.
(dired-sort-toggle): Minor optimization.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Mon, 16 Sep 2002 17:13:16 +0000 |
parents | 7281e0917f10 |
children | 8fbfc7c3386c |
files | lisp/dired.el |
diffstat | 1 files changed, 22 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/dired.el Mon Sep 16 15:30:04 2002 +0000 +++ b/lisp/dired.el Mon Sep 16 17:13:16 2002 +0000 @@ -192,7 +192,7 @@ ;; Note this can't simply be run inside function `dired-ls' as the hook ;; functions probably depend on the dired-subdir-alist to be OK. -;;; Internal variables +;; Internal variables (defvar dired-marker-char ?* ; the answer is 42 ;; so that you can write things like @@ -304,11 +304,10 @@ ;; ;; Files suffixed with `completion-ignored-extensions'. '(eval . - (let ((extensions (mapcar 'regexp-quote completion-ignored-extensions))) - ;; It is quicker to first find just an extension, then go back to the - ;; start of that file name. So we do this complex MATCH-ANCHORED form. - (list (concat "\\(" (mapconcat 'identity extensions "\\|") "\\|#\\)$") - '(".+" (dired-move-to-filename) nil (0 font-lock-string-face)))))) + ;; It is quicker to first find just an extension, then go back to the + ;; start of that file name. So we do this complex MATCH-ANCHORED form. + (list (concat "\\(" (regexp-opt completion-ignored-extensions) "\\|#\\)$") + '(".+" (dired-move-to-filename) nil (0 font-lock-string-face))))) "Additional expressions to highlight in Dired mode.") ;;; Macros must be defined before they are used, for the byte compiler. @@ -1449,7 +1448,7 @@ (setq file (read (concat "\"" - ;; some ls -b don't escape quotes, argh! + ;; Some ls -b don't escape quotes, argh! ;; This is not needed for GNU ls, though. (or (dired-string-replace-match "\\([^\\]\\|\\`\\)\"" file "\\1\\\\\"" nil t) @@ -1584,17 +1583,21 @@ ;; Returns position (point) or nil if no filename on this line." (defun dired-move-to-filename (&optional raise-error eol) ;; This is the UNIX version. - (or eol (setq eol (progn (end-of-line) (point)))) + (or eol (setq eol (line-end-position))) (beginning-of-line) ;; First try assuming `ls --dired' was used. - (let ((change (next-single-property-change (point) 'dired-filename - nil eol))) - (if (and change (< change eol)) - (goto-char change) - (if (re-search-forward dired-move-to-filename-regexp eol t) - (goto-char (match-end 0)) - (if raise-error - (error "No file on this line")))))) + (let ((change (next-single-property-change (point) 'dired-filename nil eol))) + (cond + ((and change (< change eol)) + (goto-char change)) + ((re-search-forward dired-move-to-filename-regexp eol t) + (goto-char (match-end 0))) + ((re-search-forward dired-permission-flags-regexp eol t) + ;; Ha! There *is* a file. Our regexp-from-hell just failed to find it. + (funcall (if raise-error 'error 'message) + "Unrecognized line! Check dired-move-to-filename-regexp")) + (raise-error + (error "No file on this line"))))) (defun dired-move-to-end-of-filename (&optional no-error) ;; Assumes point is at beginning of filename, @@ -2244,9 +2247,8 @@ `uncompress'.") (defun dired-mark-pop-up (bufname op-symbol files function &rest args) - "Args BUFNAME OP-SYMBOL FILES FUNCTION &rest ARGS. -Return FUNCTION's result on ARGS after popping up a window (in a buffer -named BUFNAME, nil gives \" *Marked Files*\") showing the marked + "Return FUNCTION's result on ARGS after popping up a window +\(in a buffer named BUFNAME, nil gives \" *Marked Files*\") showing the marked files. Uses function `dired-pop-to-buffer' to do that. FUNCTION should not manipulate files. It should only read input (an argument or confirmation). @@ -2749,7 +2751,7 @@ (if (string-match " " dired-actual-switches) ;; New toggle scheme: add/remove a trailing " -t" (if (string-match " -t\\'" dired-actual-switches) - (dired-replace-in-string " -t\\'" "" dired-actual-switches) + (substring dired-actual-switches 0 (match-beginning 0)) (concat dired-actual-switches " -t")) ;; old toggle scheme: look for some 't' switch and add/remove it (concat