# HG changeset patch # User Stefan Monnier # Date 1210653572 0 # Node ID 77013c501e342d1a29df7164e9b9352c9d8e646b # Parent 2021b2b9d63c82bbcbdaf14ecb82c430fa4186d6 (Qdefault_directory): New var. (file_name_completion): Use it instead of Fexpand_file_name. (syms_of_dired): Initialize it. diff -r 2021b2b9d63c -r 77013c501e34 src/ChangeLog --- 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 + + * 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 * fileio.c (double_dollars): Remove dead code. diff -r 2021b2b9d63c -r 77013c501e34 src/dired.c --- 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);