Merge changes from emacs-23 branch.
This commit is contained in:
commit
4628bef1ee
34 changed files with 496 additions and 247 deletions
48
src/coding.c
48
src/coding.c
|
@ -6016,10 +6016,9 @@ raw_text_coding_system (Lisp_Object coding_system)
|
|||
}
|
||||
|
||||
|
||||
/* If CODING_SYSTEM doesn't specify end-of-line format but PARENT
|
||||
does, return one of the subsidiary that has the same eol-spec as
|
||||
PARENT. Otherwise, return CODING_SYSTEM. If PARENT is nil,
|
||||
inherit end-of-line format from the system's setting
|
||||
/* If CODING_SYSTEM doesn't specify end-of-line format, return one of
|
||||
the subsidiary that has the same eol-spec as PARENT (if it is not
|
||||
nil and specifies end-of-line format) or the system's setting
|
||||
(system_eol_type). */
|
||||
|
||||
Lisp_Object
|
||||
|
@ -6041,6 +6040,8 @@ coding_inherit_eol_type (Lisp_Object coding_system, Lisp_Object parent)
|
|||
|
||||
parent_spec = CODING_SYSTEM_SPEC (parent);
|
||||
parent_eol_type = AREF (parent_spec, 2);
|
||||
if (VECTORP (parent_eol_type))
|
||||
parent_eol_type = system_eol_type;
|
||||
}
|
||||
else
|
||||
parent_eol_type = system_eol_type;
|
||||
|
@ -6054,6 +6055,45 @@ coding_inherit_eol_type (Lisp_Object coding_system, Lisp_Object parent)
|
|||
return coding_system;
|
||||
}
|
||||
|
||||
|
||||
/* Check if text-conversion and eol-conversion of CODING_SYSTEM are
|
||||
decided for writing to a process. If not, complement them, and
|
||||
return a new coding system. */
|
||||
|
||||
Lisp_Object
|
||||
complement_process_encoding_system (Lisp_Object coding_system)
|
||||
{
|
||||
Lisp_Object coding_base = Qnil, eol_base = Qnil;
|
||||
Lisp_Object spec, attrs;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
if (i == 1)
|
||||
coding_system = CDR_SAFE (Vdefault_process_coding_system);
|
||||
else if (i == 2)
|
||||
coding_system = preferred_coding_system ();
|
||||
spec = CODING_SYSTEM_SPEC (coding_system);
|
||||
if (NILP (spec))
|
||||
continue;
|
||||
attrs = AREF (spec, 0);
|
||||
if (NILP (coding_base) && ! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
|
||||
coding_base = CODING_ATTR_BASE_NAME (attrs);
|
||||
if (NILP (eol_base) && ! VECTORP (AREF (spec, 2)))
|
||||
eol_base = coding_system;
|
||||
if (! NILP (coding_base) && ! NILP (eol_base))
|
||||
break;
|
||||
}
|
||||
|
||||
if (i > 0)
|
||||
/* The original CODING_SYSTEM didn't specify text-conversion or
|
||||
eol-conversion. Be sure that we return a fully complemented
|
||||
coding system. */
|
||||
coding_system = coding_inherit_eol_type (coding_base, eol_base);
|
||||
return coding_system;
|
||||
}
|
||||
|
||||
|
||||
/* Emacs has a mechanism to automatically detect a coding system if it
|
||||
is one of Emacs' internal format, ISO2022, SJIS, and BIG5. But,
|
||||
it's impossible to distinguish some coding systems accurately
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue