# HG changeset patch # User Stefan Monnier # Date 1052158388 0 # Node ID a4f8713c47539e0f33adfefbc4e176aa81dad6ef # Parent 997060f8dbbb2e12badb09a5a9f28dabd26a5998 (Qwrite_region_annotate_functions): New var. (build_annotations): Use it to process the global part of the hook. (syms_of_fileio): Init and staticpro it. diff -r 997060f8dbbb -r a4f8713c4753 src/fileio.c --- a/src/fileio.c Mon May 05 18:06:03 2003 +0000 +++ b/src/fileio.c Mon May 05 18:13:08 2003 +0000 @@ -183,6 +183,7 @@ /* Functions to be called to create text property annotations for file. */ Lisp_Object Vwrite_region_annotate_functions; +Lisp_Object Qwrite_region_annotate_functions; /* During build_annotations, each time an annotation function is called, this holds the annotations made by the previous functions. */ @@ -5217,7 +5218,7 @@ Lisp_Object p, res; struct gcpro gcpro1, gcpro2; Lisp_Object original_buffer; - int i; + int i, used_global = 0; XSETBUFFER (original_buffer, current_buffer); @@ -5227,6 +5228,15 @@ while (CONSP (p)) { struct buffer *given_buffer = current_buffer; + if (EQ (Qt, XCAR (p)) && !used_global) + { /* Use the global value of the hook. */ + Lisp_Object arg[2]; + used_global = 1; + arg[0] = Fdefault_value (Qwrite_region_annotate_functions); + arg[1] = XCDR (p); + p = Fappend (2, arg); + continue; + } Vwrite_region_annotations_so_far = annotations; res = call2 (XCAR (p), start, end); /* If the function makes a different buffer current, @@ -6449,8 +6459,13 @@ insert before the first byte written). The POSITIONs must be sorted into increasing order. If there are several functions in the list, the several lists are merged destructively. Alternatively, the function can return -with a different buffer current and value nil.*/); +with a different buffer current; in that case it should pay attention +to the annotations returned by previous functions and listed in +`write-region-annotations-so-far'.*/); Vwrite_region_annotate_functions = Qnil; + staticpro (&Qwrite_region_annotate_functions); + Qwrite_region_annotate_functions + = intern ("write-region-annotate-functions"); DEFVAR_LISP ("write-region-annotations-so-far", &Vwrite_region_annotations_so_far,