Mercurial > emacs
changeset 41288:1d1183771c4f
(Fwrite_region): Move choose_write_coding_system to after build_annotations.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Mon, 19 Nov 2001 21:50:44 +0000 |
parents | eeb1c0923d4f |
children | 11fcc0db18c4 |
files | src/fileio.c |
diffstat | 1 files changed, 9 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/fileio.c Mon Nov 19 21:06:17 2001 +0000 +++ b/src/fileio.c Mon Nov 19 21:50:44 2001 +0000 @@ -4697,12 +4697,7 @@ if (!NILP (start) && !STRINGP (start)) validate_region (&start, &end); - GCPRO4 (start, filename, visit, lockname); - - /* Decide the coding-system to encode the data with. */ - choose_write_coding_system (start, end, filename, - append, visit, lockname, &coding); - Vlast_coding_system_used = coding.symbol; + GCPRO5 (start, filename, visit, visit_file, lockname); filename = Fexpand_file_name (filename, Qnil); @@ -4713,15 +4708,12 @@ visit_file = Fexpand_file_name (visit, Qnil); else visit_file = filename; - UNGCPRO; if (NILP (lockname)) lockname = visit_file; annotations = Qnil; - GCPRO5 (start, filename, annotations, visit_file, lockname); - /* If the file name has special constructs in it, call the corresponding file handler. */ handler = Ffind_file_name_handler (filename, Qwrite_region); @@ -4767,6 +4759,14 @@ GCPRO5 (start, filename, annotations, visit_file, lockname); + /* Decide the coding-system to encode the data with. + 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.symbol; + given_buffer = current_buffer; annotations = build_annotations_2 (start, end, coding.pre_write_conversion, annotations);