diff --git a/src/dired.c b/src/dired.c index 834729a0319..de93a67adc4 100644 --- a/src/dired.c +++ b/src/dired.c @@ -236,12 +236,18 @@ Returns nil if DIR contains no name starting with FILE.") { Lisp_Object handler; - /* If the file name has special constructs in it, + /* If the directory name has special constructs in it, call the corresponding file handler. */ handler = Ffind_file_name_handler (dirname, Qfile_name_completion); if (!NILP (handler)) return call3 (handler, Qfile_name_completion, file, dirname); + /* If the file name has special constructs in it, + call the corresponding file handler. */ + handler = Ffind_file_name_handler (file, Qfile_name_completion); + if (!NILP (handler)) + return call3 (handler, Qfile_name_completion, file, dirname); + return file_name_completion (file, dirname, 0, 0); } @@ -254,12 +260,18 @@ These are all file names in directory DIR which begin with FILE.") { Lisp_Object handler; - /* If the file name has special constructs in it, + /* If the directory name has special constructs in it, call the corresponding file handler. */ handler = Ffind_file_name_handler (dirname, Qfile_name_all_completions); if (!NILP (handler)) return call3 (handler, Qfile_name_all_completions, file, dirname); + /* If the file name has special constructs in it, + call the corresponding file handler. */ + handler = Ffind_file_name_handler (file, Qfile_name_all_completions); + if (!NILP (handler)) + return call3 (handler, Qfile_name_all_completions, file, dirname); + return file_name_completion (file, dirname, 1, 0); }