Mercurial > emacs
changeset 61942:cf8e7c12c048
(Ffind_file_name_handler): Handle the `operations'
property of the file name handler.
(Qoperations): New variable.
(syms_of_fileio): Initialize and staticpro it.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sat, 30 Apr 2005 20:12:13 +0000 |
parents | b3a3357502cd |
children | 26bd7a854809 |
files | src/fileio.c |
diffstat | 1 files changed, 13 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/fileio.c Sat Apr 30 20:08:12 2005 +0000 +++ b/src/fileio.c Sat Apr 30 20:12:13 2005 +0000 @@ -175,6 +175,10 @@ whose I/O is done with a special handler. */ Lisp_Object Vfile_name_handler_alist; +/* Property name of a file name handler, + which gives a list of operations it handles.. */ +Lisp_Object Qoperations; + /* Lisp functions for translating file formats */ Lisp_Object Qformat_decode, Qformat_annotate_function; @@ -366,13 +370,16 @@ elt = XCAR (chain); if (CONSP (elt)) { - Lisp_Object string; + Lisp_Object string = XCAR (elt); int match_pos; - string = XCAR (elt); + Lisp_Object handler = XCDR (elt); + Lisp_Object operations = Fget (handler, Qoperations); + if (STRINGP (string) - && (match_pos = fast_string_match (string, filename)) > pos) + && (match_pos = fast_string_match (string, filename)) > pos + && (NILP (operations) || ! NILP (Fmemq (operation, operations)))) { - Lisp_Object handler, tem; + Lisp_Object tem; handler = XCDR (elt); tem = Fmemq (handler, inhibited_handlers); @@ -6437,6 +6444,7 @@ void syms_of_fileio () { + Qoperations = intern ("operations"); Qexpand_file_name = intern ("expand-file-name"); Qsubstitute_in_file_name = intern ("substitute-in-file-name"); Qdirectory_file_name = intern ("directory-file-name"); @@ -6471,6 +6479,7 @@ Qset_visited_file_modtime = intern ("set-visited-file-modtime"); Qauto_save_coding = intern ("auto-save-coding"); + staticpro (&Qoperations); staticpro (&Qexpand_file_name); staticpro (&Qsubstitute_in_file_name); staticpro (&Qdirectory_file_name);