]> git.eshelyaron.com Git - emacs.git/commitdiff
(Qdefault_directory): New var.
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 13 May 2008 04:39:32 +0000 (04:39 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 13 May 2008 04:39:32 +0000 (04:39 +0000)
(file_name_completion): Use it instead of Fexpand_file_name.
(syms_of_dired): Initialize it.

src/ChangeLog
src/dired.c

index afc440673c0de80906fcf0fcdb982bbc5ee19dac..86bc2e171aed266c972ca28cc1008ce703fb26b1 100644 (file)
@@ -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.
index f54418a0810c70d64dc849b28f3dbac1f0d09151..f25f24e8e472457cd7fa0a3a25e7ac79f63efac7 100644 (file)
@@ -457,6 +457,7 @@ These are all file names in directory DIRECTORY which begin with FILE.  */)
 }
 
 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 @@ file_name_completion (file, dirname, all_flag, ver_flag, predicate)
   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 @@ file_name_completion (file, dirname, all_flag, ver_flag, predicate)
 
          /* 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 @@ syms_of_dired ()
   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 @@ syms_of_dired ()
   staticpro (&Qfile_name_all_completions);
   staticpro (&Qfile_attributes);
   staticpro (&Qfile_attributes_lessp);
+  staticpro (&Qdefault_directory);
 
   defsubr (&Sdirectory_files);
   defsubr (&Sdirectory_files_and_attributes);