changeset 94888:77013c501e34

(Qdefault_directory): New var. (file_name_completion): Use it instead of Fexpand_file_name. (syms_of_dired): Initialize it.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 13 May 2008 04:39:32 +0000
parents 2021b2b9d63c
children e80a3956601b
files src/ChangeLog src/dired.c
diffstat 2 files changed, 13 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Mon May 12 21:43:04 2008 +0000
+++ b/src/ChangeLog	Tue May 13 04:39:32 2008 +0000
@@ -1,3 +1,9 @@
+2008-05-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* dired.c (Qdefault_directory): New var.
+	(file_name_completion): Use it instead of Fexpand_file_name.
+	(syms_of_dired): Initialize it.
+
 2008-05-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* fileio.c (double_dollars): Remove dead code.
--- a/src/dired.c	Mon May 12 21:43:04 2008 +0000
+++ b/src/dired.c	Tue May 13 04:39:32 2008 +0000
@@ -457,6 +457,7 @@
 }
 
 static int file_name_completion_stat ();
+Lisp_Object Qdefault_directory;
 
 Lisp_Object
 file_name_completion (file, dirname, all_flag, ver_flag, predicate)
@@ -505,6 +506,7 @@
   encoded_file = encoded_dir = Qnil;
   GCPRO5 (file, dirname, bestmatch, encoded_file, encoded_dir);
   dirname = Fexpand_file_name (dirname, Qnil);
+  specbind (Qdefault_directory, dirname);
 
   /* Do completion on the encoded file name
      because the other names in the directory are (we presume)
@@ -667,22 +669,17 @@
 
 	  /* This is a possible completion */
 	  if (directoryp)
-	    {
-	      /* This completion is a directory; make it end with '/' */
-	      name = Ffile_name_as_directory (name);
-	    }
+	    /* This completion is a directory; make it end with '/'.  */
+	    name = Ffile_name_as_directory (name);
 
 	  /* Test the predicate, if any.  */
-
 	  if (!NILP (predicate))
 	    {
-	      Lisp_Object decoded;
 	      Lisp_Object val;
 	      struct gcpro gcpro1;
 
 	      GCPRO1 (name);
-	      decoded = Fexpand_file_name (name, dirname);
-	      val = call1 (predicate, decoded);
+	      val = call1 (predicate, name);
 	      UNGCPRO;
 
 	      if (NILP (val))
@@ -1113,6 +1110,7 @@
   Qfile_name_all_completions = intern ("file-name-all-completions");
   Qfile_attributes = intern ("file-attributes");
   Qfile_attributes_lessp = intern ("file-attributes-lessp");
+  Qdefault_directory = intern ("default-directory");
 
   staticpro (&Qdirectory_files);
   staticpro (&Qdirectory_files_and_attributes);
@@ -1120,6 +1118,7 @@
   staticpro (&Qfile_name_all_completions);
   staticpro (&Qfile_attributes);
   staticpro (&Qfile_attributes_lessp);
+  staticpro (&Qdefault_directory);
 
   defsubr (&Sdirectory_files);
   defsubr (&Sdirectory_files_and_attributes);