1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-12 16:23:57 +00:00

(Finsert_file_contents): Call Vset_auto_coding_function

with two arguments.
(Fwrite_region): If buffer-file-coding-system is set locally, use
the coding system whithout checking file-coding-system-alist.
(syms_of_fileio): Docstring of set-auto-coding-function adjusted
for the change of argument number.
This commit is contained in:
Kenichi Handa 1998-07-25 04:23:13 +00:00
parent 47e1dcfee1
commit 1255deb9a6

View File

@ -3503,7 +3503,8 @@ actually used.")
current_buffer->enable_multibyte_characters = Qnil;
insert_1_both (read_buf, nread, nread, 0, 0, 0);
TEMP_SET_PT_BOTH (BEG, BEG_BYTE);
val = call1 (Vset_auto_coding_function, make_number (nread));
val = call2 (Vset_auto_coding_function,
filename, make_number (nread));
set_buffer_internal (prev);
/* Discard the unwind protect for recovering the
current buffer. */
@ -4034,8 +4035,8 @@ actually used.")
current_buffer->enable_multibyte_characters = Qnil;
record_unwind_protect (set_auto_coding_unwind,
prev_multibyte);
val = call1 (Vset_auto_coding_function,
make_number (inserted));
val = call2 (Vset_auto_coding_function,
filename, make_number (inserted));
/* Discard the unwind protect for recovering the
error of Vset_auto_coding_function. */
specpdl_ptr--;
@ -4291,7 +4292,7 @@ This does code conversion according to the value of\n\
val = Qnil;
else if (!NILP (Vcoding_system_for_write))
val = Vcoding_system_for_write;
else if (NILP (current_buffer->enable_multibyte_characters))
else
{
/* If the variable `buffer-file-coding-system' is set locally,
it means that the file was read with some kind of code
@ -4303,37 +4304,42 @@ This does code conversion according to the value of\n\
format if the default value of `buffer-file-coding-system'
tells that it is not Unix-like (LF only) format. */
val = current_buffer->buffer_file_coding_system;
if (NILP (Flocal_variable_p (Qbuffer_file_coding_system, Qnil)))
if (NILP (val)
|| NILP (Flocal_variable_p (Qbuffer_file_coding_system, Qnil)))
{
struct coding_system coding_temp;
setup_coding_system (Fcheck_coding_system (val), &coding_temp);
if (coding_temp.eol_type == CODING_EOL_CRLF
|| coding_temp.eol_type == CODING_EOL_CR)
if (NILP (current_buffer->enable_multibyte_characters))
{
setup_coding_system (Qraw_text, &coding);
coding.eol_type = coding_temp.eol_type;
setup_coding_system (Fcheck_coding_system (val), &coding);
setup_raw_text_coding_system (&coding);
goto done_setup_coding;
}
val = Qnil;
}
}
else
{
Lisp_Object args[7], coding_systems;
args[0] = Qwrite_region; args[1] = start; args[2] = end;
args[3] = filename; args[4] = append; args[5] = visit;
args[6] = lockname;
coding_systems = Ffind_operation_coding_system (7, args);
val = (CONSP (coding_systems) && !NILP (XCONS (coding_systems)->cdr)
? XCONS (coding_systems)->cdr
: current_buffer->buffer_file_coding_system);
/* Confirm that VAL can surely encode the current region. */
if (!NILP (Ffboundp (Vselect_safe_coding_system_function)))
if (NILP (val))
{
/* Check file-coding-system-alist. */
Lisp_Object args[7], coding_systems;
args[0] = Qwrite_region; args[1] = start; args[2] = end;
args[3] = filename; args[4] = append; args[5] = visit;
args[6] = lockname;
coding_systems = Ffind_operation_coding_system (7, args);
if (CONSP (coding_systems) && !NILP (XCONS (coding_systems)->cdr))
val = XCONS (coding_systems)->cdr;
}
if (NILP (val))
/* If we still have not decided a coding system, use the
default value of buffer-file-coding-system. */
val = current_buffer->buffer_file_coding_system;
if (! NILP (val)
&& !NILP (Ffboundp (Vselect_safe_coding_system_function)))
/* Confirm that VAL can surely encode the current region. */
val = call3 (Vselect_safe_coding_system_function, start, end, val);
}
setup_coding_system (Fcheck_coding_system (val), &coding);
setup_coding_system (Fcheck_coding_system (val), &coding);
done_setup_coding:
if (!STRINGP (start) && !NILP (current_buffer->selective_display))
@ -5646,9 +5652,11 @@ for its argument.");
DEFVAR_LISP ("set-auto-coding-function",
&Vset_auto_coding_function,
"If non-nil, a function to call to decide a coding system of file.\n\
One argument is passed to this function: the length of a file contents\n\
following the point.\n\
This function should return a coding system to decode the file contents\n\
Two arguments are passed to this function: the file name\n\
and the length of a file contents following the point.\n\
This function should return a coding system to decode the file contents.\n\
It should check the file name against `auto-coding-alist'.\n\
If no coding system is decided, it should check a coding system\n\
specified in the heading lines with the format:\n\
-*- ... coding: CODING-SYSTEM; ... -*-\n\
or local variable spec of the tailing lines with `coding:' tag.");