]> code.delx.au - gnu-emacs/commitdiff
(dired-read-dir-and-switches): Ignore ., .., and
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 13 May 2008 05:15:57 +0000 (05:15 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 13 May 2008 05:15:57 +0000 (05:15 +0000)
completion-ignored-extension directories if there's something else.
(dired-mark-if, dired-map-over-marks, dired-readin, dired-revert)
(dired-remember-marks, dired-undo, dired-build-subdir-alist)
(dired-internal-do-deletions, dired-mark-files-in-region, dired-mark)
(dired-toggle-marks, dired-change-marks, dired-unmark-all-files):
buffer-read-only -> inhibit-read-only.

lisp/ChangeLog
lisp/dired.el

index bd621914fe86b4af221b63f19907a837dc3d0f50..d290e1bbea09e614afc24cace5d8424d3c8765c3 100644 (file)
@@ -1,3 +1,13 @@
+2008-05-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * dired.el (dired-read-dir-and-switches): Ignore ., .., and
+       completion-ignored-extension directories if there's something else.
+       (dired-mark-if, dired-map-over-marks, dired-readin, dired-revert)
+       (dired-remember-marks, dired-undo, dired-build-subdir-alist)
+       (dired-internal-do-deletions, dired-mark-files-in-region, dired-mark)
+       (dired-toggle-marks, dired-change-marks, dired-unmark-all-files):
+       buffer-read-only -> inhibit-read-only.
+
 2008-05-12  Eric S. Raymond  <esr@snark.thyrsus.com>
 
        * vc.el (vc-expand-dirs): Stop this function from tossing out
 2008-05-12  Eric S. Raymond  <esr@snark.thyrsus.com>
 
        * vc.el (vc-expand-dirs): Stop this function from tossing out
index 65728abb58d150a10e39a063094f51b0e604bc04..e5e3dd2358b2a5e27cff2a99fe858d4707f7d047 100644 (file)
@@ -464,7 +464,7 @@ PREDICATE is evaluated on each line, with point at beginning of line.
 MSG is a noun phrase for the type of files being marked.
 It should end with a noun that can be pluralized by adding `s'.
 Return value is the number of files marked, or nil if none were marked."
 MSG is a noun phrase for the type of files being marked.
 It should end with a noun that can be pluralized by adding `s'.
 Return value is the number of files marked, or nil if none were marked."
-  `(let (buffer-read-only count)
+  `(let ((inhibit-read-only t) count)
     (save-excursion
       (setq count 0)
       (if ,msg (message "Marking %ss..." ,msg))
     (save-excursion
       (setq count 0)
       (if ,msg (message "Marking %ss..." ,msg))
@@ -510,7 +510,7 @@ return (t FILENAME) instead of (FILENAME)."
   ;;endless loop.
   ;;This warning should not apply any longer, sk  2-Sep-1991 14:10.
   `(prog1
   ;;endless loop.
   ;;This warning should not apply any longer, sk  2-Sep-1991 14:10.
   `(prog1
-       (let (buffer-read-only case-fold-search found results)
+       (let ((inhibit-read-only t) case-fold-search found results)
         (if ,arg
             (if (integerp ,arg)
                 (progn ;; no save-excursion, want to move point.
         (if ,arg
             (if (integerp ,arg)
                 (progn ;; no save-excursion, want to move point.
@@ -600,7 +600,11 @@ Don't use that together with FILTER."
                              nil default-directory nil)
       (lexical-let ((default (and buffer-file-name
                                   (abbreviate-file-name buffer-file-name)))
                              nil default-directory nil)
       (lexical-let ((default (and buffer-file-name
                                   (abbreviate-file-name buffer-file-name)))
-                    (defdir default-directory))
+                    (defdir default-directory)
+                    (cie ()))
+        (dolist (ext completion-ignored-extensions)
+          (if (eq ?/ (aref ext (1- (length ext)))) (push ext cie)))
+        (setq cie (concat (regexp-opt cie "\\(?:") "\\'"))
         (minibuffer-with-setup-hook
             (lambda ()
               (setq minibuffer-default default)
         (minibuffer-with-setup-hook
             (lambda ()
               (setq minibuffer-default default)
@@ -625,7 +629,11 @@ Don't use that together with FILTER."
             ;; does not obey its `predicate' argument.
             (completion-table-in-turn
              (lambda (str pred action)
             ;; does not obey its `predicate' argument.
             (completion-table-in-turn
              (lambda (str pred action)
-               (let ((read-file-name-predicate 'file-directory-p))
+               (let ((read-file-name-predicate
+                      (lambda (f) (and (not (member f '("./" "../")))
+                                  ;; Hack! Faster than file-directory-p!
+                                  (eq (aref f (1- (length f))) ?/)
+                                  (not (string-match cie f))))))
                  (complete-with-action
                   action 'read-file-name-internal str nil)))
              'read-file-name-internal)
                  (complete-with-action
                   action 'read-file-name-internal str nil)))
              'read-file-name-internal)
@@ -838,7 +846,7 @@ wildcards, erases the buffer, and builds the subdir-alist anew
       (make-local-variable 'file-name-coding-system)
       (setq file-name-coding-system
            (or coding-system-for-read file-name-coding-system))
       (make-local-variable 'file-name-coding-system)
       (setq file-name-coding-system
            (or coding-system-for-read file-name-coding-system))
-      (let (buffer-read-only
+      (let ((inhibit-read-only t)
            ;; Don't make undo entries for readin.
            (buffer-undo-list t))
        (widen)
            ;; Don't make undo entries for readin.
            (buffer-undo-list t))
        (widen)
@@ -1082,7 +1090,7 @@ Preserves old cursor, marks/flags, hidden-p."
        (hidden-subdirs (dired-remember-hidden))
        (old-subdir-alist (cdr (reverse dired-subdir-alist))) ; except pwd
        (case-fold-search nil)          ; we check for upper case ls flags
        (hidden-subdirs (dired-remember-hidden))
        (old-subdir-alist (cdr (reverse dired-subdir-alist))) ; except pwd
        (case-fold-search nil)          ; we check for upper case ls flags
-       buffer-read-only)
+       (inhibit-read-only t))
     (goto-char (point-min))
     (setq mark-alist;; only after dired-remember-hidden since this unhides:
          (dired-remember-marks (point-min) (point-max)))
     (goto-char (point-min))
     (setq mark-alist;; only after dired-remember-hidden since this unhides:
          (dired-remember-marks (point-min) (point-max)))
@@ -1116,7 +1124,7 @@ Preserves old cursor, marks/flags, hidden-p."
 (defun dired-remember-marks (beg end)
   "Return alist of files and their marks, from BEG to END."
   (if selective-display                        ; must unhide to make this work.
 (defun dired-remember-marks (beg end)
   "Return alist of files and their marks, from BEG to END."
   (if selective-display                        ; must unhide to make this work.
-      (let (buffer-read-only)
+      (let ((inhibit-read-only t))
        (subst-char-in-region beg end ?\r ?\n)))
   (let (fil chr alist)
     (save-excursion
        (subst-char-in-region beg end ?\r ?\n)))
   (let (fil chr alist)
     (save-excursion
@@ -1725,7 +1733,7 @@ Keybindings:
 This doesn't recover lost files, it just undoes changes in the buffer itself.
 You can use it to recover marks, killed lines or subdirs."
   (interactive)
 This doesn't recover lost files, it just undoes changes in the buffer itself.
 You can use it to recover marks, killed lines or subdirs."
   (interactive)
-  (let (buffer-read-only)
+  (let ((inhibit-read-only t))
     (undo))
   (dired-build-subdir-alist)
   (message "Change in dired buffer undone.
     (undo))
   (dired-build-subdir-alist)
   (message "Change in dired buffer undone.
@@ -2278,7 +2286,7 @@ instead of `dired-actual-switches'."
   (dired-clear-alist)
   (save-excursion
     (let* ((count 0)
   (dired-clear-alist)
   (save-excursion
     (let* ((count 0)
-          (buffer-read-only nil)
+          (inhibit-read-only t)
           (buffer-undo-list t)
           (switches (or switches dired-actual-switches))
           new-dir-name
           (buffer-undo-list t)
           (switches (or switches dired-actual-switches))
           new-dir-name
@@ -2546,7 +2554,7 @@ non-empty directories is allowed."
          (let (failures);; files better be in reverse order for this loop!
            (while l
              (goto-char (cdr (car l)))
          (let (failures);; files better be in reverse order for this loop!
            (while l
              (goto-char (cdr (car l)))
-             (let (buffer-read-only)
+             (let ((inhibit-read-only t))
                (condition-case err
                    (let ((fn (car (car l))))
                      (dired-delete-file fn dired-recursive-deletes)
                (condition-case err
                    (let ((fn (car (car l))))
                      (dired-delete-file fn dired-recursive-deletes)
@@ -2588,7 +2596,7 @@ non-empty directories is allowed."
 (defun dired-delete-entry (file)
   (save-excursion
     (and (dired-goto-file file)
 (defun dired-delete-entry (file)
   (save-excursion
     (and (dired-goto-file file)
-        (let (buffer-read-only)
+        (let ((inhibit-read-only t))
           (delete-region (progn (beginning-of-line) (point))
                          (save-excursion (forward-line 1) (point))))))
   (dired-clean-up-after-deletion file))
           (delete-region (progn (beginning-of-line) (point))
                          (save-excursion (forward-line 1) (point))))))
   (dired-clean-up-after-deletion file))
@@ -2779,7 +2787,7 @@ just the current file."
               (following-char))))))
 
 (defun dired-mark-files-in-region (start end)
               (following-char))))))
 
 (defun dired-mark-files-in-region (start end)
-  (let (buffer-read-only)
+  (let ((inhibit-read-only t))
     (if (> start end)
        (error "start > end"))
     (goto-char start)                  ; assumed at beginning of line
     (if (> start end)
        (error "start > end"))
     (goto-char start)                  ; assumed at beginning of line
@@ -2804,7 +2812,7 @@ this subdir."
   (interactive "P")
   (if (dired-get-subdir)
       (save-excursion (dired-mark-subdir-files))
   (interactive "P")
   (if (dired-get-subdir)
       (save-excursion (dired-mark-subdir-files))
-    (let (buffer-read-only)
+    (let ((inhibit-read-only t))
       (dired-repeat-over-lines
        (prefix-numeric-value arg)
        (function (lambda () (delete-char 1) (insert dired-marker-char)))))))
       (dired-repeat-over-lines
        (prefix-numeric-value arg)
        (function (lambda () (delete-char 1) (insert dired-marker-char)))))))
@@ -2839,7 +2847,7 @@ As always, hidden subdirs are not affected."
   (interactive)
   (save-excursion
     (goto-char (point-min))
   (interactive)
   (save-excursion
     (goto-char (point-min))
-    (let (buffer-read-only)
+    (let ((inhibit-read-only t))
       (while (not (eobp))
         (or (dired-between-files)
             (looking-at dired-re-dot)
       (while (not (eobp))
         (or (dired-between-files)
             (looking-at dired-re-dot)
@@ -3019,7 +3027,7 @@ OLD and NEW are both characters used to mark files."
   (if (or (eq old ?\r) (eq new ?\r))
       (ding)
     (let ((string (format "\n%c" old))
   (if (or (eq old ?\r) (eq new ?\r))
       (ding)
     (let ((string (format "\n%c" old))
-         (buffer-read-only))
+         (inhibit-read-only t))
       (save-excursion
        (goto-char (point-min))
        (while (search-forward string nil t)
       (save-excursion
        (goto-char (point-min))
        (while (search-forward string nil t)
@@ -3044,7 +3052,7 @@ Type \\[help-command] at that time for help."
   (interactive "cRemove marks (RET means all): \nP")
   (save-excursion
     (let* ((count 0)
   (interactive "cRemove marks (RET means all): \nP")
   (save-excursion
     (let* ((count 0)
-          buffer-read-only case-fold-search query
+          (inhibit-read-only t) case-fold-search query
           (string (format "\n%c" mark))
           (help-form "\
 Type SPC or `y' to unmark one file, DEL or `n' to skip to next,
           (string (format "\n%c" mark))
           (help-form "\
 Type SPC or `y' to unmark one file, DEL or `n' to skip to next,