diff options
author | Luc Teirlinck <teirllm@auburn.edu> | 2004-05-25 18:47:58 +0000 |
---|---|---|
committer | Luc Teirlinck <teirllm@auburn.edu> | 2004-05-25 18:47:58 +0000 |
commit | 7b3b41974d131dffe16c4e3330aba1e65847477d (patch) | |
tree | f639757269bb5e4c5d20aea1f1c92fa740d681dd | |
parent | e78d0ca1771386f94928f60328f0a0347f60bd09 (diff) | |
download | emacs-7b3b41974d131dffe16c4e3330aba1e65847477d.tar.gz |
(find-file-noselect-1): Fix bug introduced by Revision 1.694.
As a side effect, `inhibit-read-only' is again, by default, t during
execution of `find-file-not-found-functions'.
(insert-directory): Check that lines were really inserted by
the --dired switch, before erasing them.
-rw-r--r-- | lisp/files.el | 62 |
1 files changed, 33 insertions, 29 deletions
diff --git a/lisp/files.el b/lisp/files.el index ccd30a4de30..06792a0d04e 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -1379,20 +1379,19 @@ that are visiting the various files." (signal 'file-error (list "File is not readable" filename))) ;; Unconditionally set error - (setq error t))))) - (condition-case () - (let ((inhibit-read-only t)) - (insert-file-contents filename t)) - (file-error - (when (and (file-exists-p filename) - (not (file-readable-p filename))) - (kill-buffer buf) - (signal 'file-error (list "File is not readable" - filename))) - ;; Run find-file-not-found-hooks until one returns non-nil. - (or (run-hook-with-args-until-success 'find-file-not-found-functions) - ;; If they fail too, set error. - (setq error t)))) + (setq error t))) + (condition-case () + (insert-file-contents filename t) + (file-error + (when (and (file-exists-p filename) + (not (file-readable-p filename))) + (kill-buffer buf) + (signal 'file-error (list "File is not readable" + filename))) + ;; Run find-file-not-found-hooks until one returns non-nil. + (or (run-hook-with-args-until-success 'find-file-not-found-functions) + ;; If they fail too, set error. + (setq error t)))))) ;; Record the file's truename, and maybe use that as visited name. (if (equal filename buffer-file-name) (setq buffer-file-truename truename) @@ -4336,21 +4335,26 @@ normally equivalent short `-D' option is just passed on to (when (looking-at "//SUBDIRED//") (delete-region (point) (progn (forward-line 1) (point))) (forward-line -1)) - (let ((end (line-end-position))) - (forward-word 1) - (forward-char 3) - (while (< (point) end) - (let ((start (+ beg (read (current-buffer)))) - (end (+ beg (read (current-buffer))))) - (if (= (char-after end) ?\n) - (put-text-property start end 'dired-filename t) - ;; It seems that we can't trust ls's output as to - ;; byte positions of filenames. - (put-text-property beg (point) 'dired-filename nil) - (end-of-line)))) - (goto-char end) - (beginning-of-line) - (delete-region (point) (progn (forward-line 2) (point))))) + (if (looking-at "//DIRED//") + (let ((end (line-end-position))) + (forward-word 1) + (forward-char 3) + (while (< (point) end) + (let ((start (+ beg (read (current-buffer)))) + (end (+ beg (read (current-buffer))))) + (if (= (char-after end) ?\n) + (put-text-property start end 'dired-filename t) + ;; It seems that we can't trust ls's output as to + ;; byte positions of filenames. + (put-text-property beg (point) 'dired-filename nil) + (end-of-line)))) + (goto-char end) + (beginning-of-line) + (delete-region (point) (progn (forward-line 2) (point)))) + (forward-line 1) + (if (looking-at "//DIRED-OPTIONS//") + (delete-region (point) (progn (forward-line 1) (point))) + (forward-line 1)))) ;; Now decode what read if necessary. (let ((coding (or coding-system-for-read |