changeset 54454:1aa9a08f7ca7

(insert-directory): Fix bug if SWITCHES is a list.
author Luc Teirlinck <teirllm@auburn.edu>
date Sun, 21 Mar 2004 04:38:36 +0000
parents 2e0d31caedd0
children e7f6c4621f86
files lisp/files.el
diffstat 1 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/files.el	Sun Mar 21 00:30:12 2004 +0000
+++ b/lisp/files.el	Sun Mar 21 04:38:36 2004 +0000
@@ -4205,14 +4205,20 @@
 (defun insert-directory (file switches &optional wildcard full-directory-p)
   "Insert directory listing for FILE, formatted according to SWITCHES.
 Leaves point after the inserted text.
-SWITCHES may be a string of options, or a list of strings.
+SWITCHES may be a string of options, or a list of strings
+representing individual options.
 Optional third arg WILDCARD means treat FILE as shell wildcard.
 Optional fourth arg FULL-DIRECTORY-P means file is a directory and
 switches do not contain `d', so that a full listing is expected.
 
 This works by running a directory listing program
 whose name is in the variable `insert-directory-program'.
-If WILDCARD, it also runs the shell specified by `shell-file-name'."
+If WILDCARD, it also runs the shell specified by `shell-file-name'.
+
+When SWITCHES contains the long `--dired' option,this function
+treats it specially, for the sake of dired.  However, the
+normally equivalent short `-D' option is just passed on to
+`insert-directory-program', as any other option."
   ;; We need the directory in order to find the right handler.
   (let ((handler (find-file-name-handler (expand-file-name file)
 					 'insert-directory)))
@@ -4301,7 +4307,9 @@
 	      (access-file file "Reading directory")
 	      (error "Listing directory failed but `access-file' worked")))
 
-	  (when (string-match "--dired\\>" switches)
+	  (when (if (stringp switches)
+		    (string-match "--dired\\>" switches)
+		  (member "--dired" switches))
 	    (forward-line -2)
             (when (looking-at "//SUBDIRED//")
               (delete-region (point) (progn (forward-line 1) (point)))