changeset 30927:5c0b3d6959c4

(build_annotations): Add a comment explaining the return value of format-annotate-function. Replace a spurios call to Flength with a CONSP test. Call format-annotate-function with a fifth arg specifying how many times the function has been called in a row, to let it choose temporary buffers appropriately.
author Gerd Moellmann <gerd@gnu.org>
date Thu, 17 Aug 2000 20:25:50 +0000
parents ca900f999e04
children 9747d7fb3ba9
files src/fileio.c
diffstat 1 files changed, 12 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/fileio.c	Thu Aug 17 20:24:27 2000 +0000
+++ b/src/fileio.c	Thu Aug 17 20:25:50 2000 +0000
@@ -4889,6 +4889,7 @@
   Lisp_Object p, res;
   struct gcpro gcpro1, gcpro2;
   Lisp_Object original_buffer;
+  int i;
 
   XSETBUFFER (original_buffer, current_buffer);
 
@@ -4921,21 +4922,26 @@
     p = Vauto_save_file_format;
   else
     p = current_buffer->file_format;
-  while (!NILP (p))
+  for (i = 0; !NILP (p); p = Fcdr (p), ++i)
     {
       struct buffer *given_buffer = current_buffer;
+      
       Vwrite_region_annotations_so_far = annotations;
-      res = call4 (Qformat_annotate_function, Fcar (p), start, end,
-		   original_buffer);
+
+      /* Value is either a list of annotations or nil if the function
+         has written annotations to a temporary buffer, which is now
+         current.  */
+      res = call5 (Qformat_annotate_function, Fcar (p), start, end,
+		   original_buffer, make_number (i));
       if (current_buffer != given_buffer)
 	{
 	  XSETFASTINT (start, BEGV);
 	  XSETFASTINT (end, ZV);
 	  annotations = Qnil;
 	}
-      Flength (res);
-      annotations = merge (annotations, res, Qcar_less_than_car);
-      p = Fcdr (p);
+      
+      if (CONSP (res))
+	annotations = merge (annotations, res, Qcar_less_than_car);
     }
 
   /* At last, do the same for the function PRE_WRITE_CONVERSION