changeset 89478:756c32423971

(choose_write_coding_system): Return a decided coding system. (Fwrite_region): Set Vlast_coding_system_used to the return value of choose_write_coding_system.
author Kenichi Handa <handa@m17n.org>
date Thu, 26 Jun 2003 00:26:38 +0000
parents 3fbea8672973
children 4f6968b6a5e8
files src/fileio.c
diffstat 1 files changed, 12 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/fileio.c	Sun Jun 22 23:27:44 2003 +0000
+++ b/src/fileio.c	Thu Jun 26 00:26:38 2003 +0000
@@ -4583,7 +4583,7 @@
 
 /* Decide the coding-system to encode the data with.  */
 
-void
+static Lisp_Object
 choose_write_coding_system (start, end, filename,
 			    append, visit, lockname, coding)
      Lisp_Object start, end, filename, append, visit, lockname;
@@ -4631,8 +4631,7 @@
 	    val = XCDR (coding_systems);
 	}
 
-      if (NILP (val)
-	  && !NILP (current_buffer->buffer_file_coding_system))
+      if (NILP (val))
 	{
 	  /* If we still have not decided a coding system, use the
 	     default value of buffer-file-coding-system.  */
@@ -4658,7 +4657,8 @@
       /* If the decided coding-system doesn't specify end-of-line
 	 format, we use that of
 	 `default-buffer-file-coding-system'.  */
-      if (! using_default_coding)
+      if (! using_default_coding
+	  && ! NILP (buffer_defaults.buffer_file_coding_system))
 	val = (coding_inherit_eol_type
 	       (val, buffer_defaults.buffer_file_coding_system));
 
@@ -4668,10 +4668,14 @@
 	val = raw_text_coding_system (val);
     }
 
-  setup_coding_system (Fcheck_coding_system (val), coding);
+  setup_coding_system (val, coding);
+  if (! NILP (val)
+      && VECTORP (CODING_ID_EOL_TYPE (coding->id)))
+    val = AREF (CODING_ID_EOL_TYPE (coding->id), 0);
 
   if (!STRINGP (start) && !NILP (current_buffer->selective_display))
     coding->mode |= CODING_MODE_SELECTIVE_DISPLAY;
+  return val;
 }
 
 DEFUN ("write-region", Fwrite_region, Swrite_region, 3, 7,
@@ -4807,9 +4811,9 @@
      We used to make this choice before calling build_annotations, but that
      leads to problems when a write-annotate-function takes care of
      unsavable chars (as was the case with X-Symbol).  */
-  choose_write_coding_system (start, end, filename,
-			      append, visit, lockname, &coding);
-  Vlast_coding_system_used = CODING_ID_NAME (coding.id);
+  Vlast_coding_system_used
+    = choose_write_coding_system (start, end, filename,
+				  append, visit, lockname, &coding);
 
   given_buffer = current_buffer;
   if (current_buffer != given_buffer)