]> git.eshelyaron.com Git - emacs.git/commitdiff
(insert-directory-safely): New function.
authorEli Zaretskii <eliz@gnu.org>
Thu, 21 Dec 2000 14:44:35 +0000 (14:44 +0000)
committerEli Zaretskii <eliz@gnu.org>
Thu, 21 Dec 2000 14:44:35 +0000 (14:44 +0000)
(recover-file): Use it instead of insert-directory.

lisp/ChangeLog
lisp/files.el

index 710aca561412ea06f5017e887e0b73cc363bbea7..7f61a1a3dfa21bcbb3a077515448dd080db22eb8 100644 (file)
@@ -1,3 +1,8 @@
+2000-12-21  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * files.el (insert-directory-safely): New function.
+       (recover-file): Use it instead of insert-directory.
+
 2000-12-21  Kenichi Handa  <handa@etl.go.jp>
 
        * international/mule-cmds.el (select-safe-coding-system): Check
index 57387b1e70e966e27b043f039959568fd55015d4..bd808ddae7bbc87d634c2c74bf74eafee3aee8ae 100644 (file)
@@ -3058,8 +3058,14 @@ non-nil, it is called instead of rereading visited file contents."
                   (if (file-symlink-p file)
                       (setq switches (concat switches "L")))
                   (set-buffer standard-output)
-                  (insert-directory file switches)
-                  (insert-directory file-name switches))))
+                  ;; Use insert-directory-safely, not insert-directory,
+                  ;; because these files might not exist.  In particular,
+                  ;; FILE might not exist if the auto-save file was for
+                  ;; a buffer that didn't visit a file, such as "*mail*".
+                  ;; The code in v20.x called `ls' directly, so we need
+                  ;; to emulate what `ls' did in that case.
+                  (insert-directory-safely file switches)
+                  (insert-directory-safely file-name switches))))
             (yes-or-no-p (format "Recover auto save file %s? " file-name)))
           (switch-to-buffer (find-file-noselect file t))
           (let ((buffer-read-only nil)
@@ -3620,6 +3626,17 @@ If WILDCARD, it also runs the shell specified by `shell-file-name'."
                      (setq available (buffer-substring (point) end))))
                  (insert " available " available))))))))))
 
+(defun insert-directory-safely (file switches
+                                    &optional wildcard full-directory-p)
+  "Insert directory listing for FILE, formatted according to SWITCHES.
+
+Like `insert-directory', but if FILE does not exist, it inserts a
+message to that effect instead of signaling an error."
+  (if (file-exists-p file)
+      (insert-directory file switches wildcard full-directory-p)
+    ;; Simulate the message printed by `ls'.
+    (insert (format "%s: No such file or directory\n" file))))
+
 (defvar kill-emacs-query-functions nil
   "Functions to call with no arguments to query about killing Emacs.
 If any of these functions returns nil, killing Emacs is cancelled.