Mercurial > emacs
diff src/dired.c @ 843:8f6ea998ad0a
*** empty log message ***
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 22 Jul 1992 03:27:55 +0000 |
parents | 707866b2a190 |
children | 8d43bfe19803 |
line wrap: on
line diff
--- a/src/dired.c Wed Jul 22 03:10:28 1992 +0000 +++ b/src/dired.c Wed Jul 22 03:27:55 1992 +0000 @@ -64,6 +64,10 @@ Lisp_Object Vcompletion_ignored_extensions; Lisp_Object Qcompletion_ignore_case; + +Lisp_Object Qdirectory_files; +Lisp_Object Qfile_name_completion; +Lisp_Object Qfile_name_all_completions; DEFUN ("directory-files", Fdirectory_files, Sdirectory_files, 1, 4, 0, "Return a list of names of files in DIRECTORY.\n\ @@ -78,6 +82,23 @@ DIR *d; int length; Lisp_Object list, name; + Lisp_Object handler; + + /* If the file name has special constructs in it, + call the corresponding file handler. */ + handler = find_file_handler (filename); + if (!NILP (handler)) + { + Lisp_Object args[6]; + + args[0] = handler; + args[1] = Qdirectory_files; + args[2] = dirname; + args[3] = full; + args[4] = match; + args[5] = nosort; + return Ffuncall (6, args); + } if (!NILP (match)) { @@ -158,6 +179,7 @@ (file, dirname) Lisp_Object file, dirname; { + Lisp_Object handler; /* Don't waste time trying to complete a null string. Besides, this case happens when user is being asked for a directory name and has supplied one ending in a /. @@ -165,6 +187,13 @@ even if there are some unique characters in that directory. */ if (XTYPE (file) == Lisp_String && XSTRING (file)->size == 0) return file; + + /* If the file name has special constructs in it, + call the corresponding file handler. */ + handler = find_file_handler (filename); + if (!NILP (handler)) + return call3 (handler, Qfile_name_completion, file, dirname); + return file_name_completion (file, dirname, 0, 0); } @@ -175,6 +204,14 @@ (file, dirname) Lisp_Object file, dirname; { + Lisp_Object handler; + + /* If the file name has special constructs in it, + call the corresponding file handler. */ + handler = find_file_handler (filename); + if (!NILP (handler)) + return call3 (handler, Qfile_name_all_completions, file, dirname); + return file_name_completion (file, dirname, 1, 0); } @@ -409,8 +446,16 @@ struct stat s; struct stat sdir; char modes[10]; + Lisp_Object handler; filename = Fexpand_file_name (filename, Qnil); + + /* If the file name has special constructs in it, + call the corresponding file handler. */ + handler = find_file_handler (filename); + if (!NILP (handler)) + return call2 (handler, Qfile_attributes, filename); + if (lstat (XSTRING (filename)->data, &s) < 0) return Qnil; @@ -457,6 +502,10 @@ syms_of_dired () { + Qdirectory_files = intern ("directory-files"); + Qfile_name_completion = intern ("file-name-completion"); + Qfile_name_all_completions = intern ("file-name-all-completions"); + defsubr (&Sdirectory_files); defsubr (&Sfile_name_completion); #ifdef VMS