Lisp_Object Vcoding_system_hash_table;
-static Lisp_Object Qcoding_system, Qeol_type;
-static Lisp_Object Qcoding_aliases;
-Lisp_Object Qunix, Qdos;
-static Lisp_Object Qmac;
-Lisp_Object Qbuffer_file_coding_system;
-static Lisp_Object Qpost_read_conversion, Qpre_write_conversion;
-static Lisp_Object Qdefault_char;
-Lisp_Object Qno_conversion, Qundecided;
-Lisp_Object Qcharset, Qutf_8;
-static Lisp_Object Qiso_2022;
-static Lisp_Object Qutf_16, Qshift_jis, Qbig5;
-static Lisp_Object Qbig, Qlittle;
-static Lisp_Object Qcoding_system_history;
-static Lisp_Object Qvalid_codes;
-static Lisp_Object QCcategory, QCmnemonic, QCdefault_char;
-static Lisp_Object QCdecode_translation_table, QCencode_translation_table;
-static Lisp_Object QCpost_read_conversion, QCpre_write_conversion;
-static Lisp_Object QCascii_compatible_p;
-
-Lisp_Object Qcall_process, Qcall_process_region;
-Lisp_Object Qstart_process, Qopen_network_stream;
-static Lisp_Object Qtarget_idx;
-
-static Lisp_Object Qinsufficient_source, Qinvalid_source, Qinterrupted;
-
-/* If a symbol has this property, evaluate the value to define the
- symbol as a coding system. */
-static Lisp_Object Qcoding_system_define_form;
-
/* Format of end-of-line decided by system. This is Qunix on
Unix and Mac, Qdos on DOS/Windows.
This has an effect only for external encoding (i.e. for output to
#ifdef emacs
-Lisp_Object Qcoding_system_p, Qcoding_system_error;
-
-/* Coding system emacs-mule and raw-text are for converting only
- end-of-line format. */
-Lisp_Object Qemacs_mule, Qraw_text;
-Lisp_Object Qutf_8_emacs;
-
-#if defined (WINDOWSNT) || defined (CYGWIN)
-static Lisp_Object Qutf_16le;
-#endif
-
/* Coding-systems are handed between Emacs Lisp programs and C internal
routines by the following three variables. */
/* Coding system to be used to encode text for terminal display when
#endif /* emacs */
-Lisp_Object Qtranslation_table;
-Lisp_Object Qtranslation_table_id;
-static Lisp_Object Qtranslation_table_for_decode;
-static Lisp_Object Qtranslation_table_for_encode;
-
/* Two special coding systems. */
static Lisp_Object Vsjis_coding_system;
static Lisp_Object Vbig5_coding_system;
#define CODING_ISO_BOL(coding) \
((coding)->spec.iso_2022.bol)
#define CODING_ISO_INVOKED_CHARSET(coding, plane) \
- CODING_ISO_DESIGNATION ((coding), CODING_ISO_INVOCATION ((coding), (plane)))
+ (CODING_ISO_INVOCATION (coding, plane) < 0 ? -1 \
+ : CODING_ISO_DESIGNATION (coding, CODING_ISO_INVOCATION (coding, plane)))
#define CODING_ISO_CMP_STATUS(coding) \
(&(coding)->spec.iso_2022.cmp_status)
#define CODING_ISO_EXTSEGMENT_LEN(coding) \
: AREF (raw_text_eol_type, 2));
}
+/* Return true if CODING corresponds to raw-text coding-system. */
+
+bool
+raw_text_coding_system_p (struct coding_system *coding)
+{
+ return (coding->decoder == decode_coding_raw_text
+ && coding->encoder == encode_coding_raw_text) ? true : false;
+}
+
/* 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
DEFUN ("coding-system-plist", Fcoding_system_plist, Scoding_system_plist,
1, 1, 0,
- doc: "Return the property list of CODING-SYSTEM.")
+ doc: /* Return the property list of CODING-SYSTEM. */)
(Lisp_Object coding_system)
{
Lisp_Object spec, attrs;
syms_of_coding (void)
{
staticpro (&Vcoding_system_hash_table);
- {
- Lisp_Object args[2];
- args[0] = QCtest;
- args[1] = Qeq;
- Vcoding_system_hash_table = Fmake_hash_table (2, args);
- }
+ Vcoding_system_hash_table = CALLN (Fmake_hash_table, QCtest, Qeq);
staticpro (&Vsjis_coding_system);
Vsjis_coding_system = Qnil;
DEFSYM (Qcoding_system_p, "coding-system-p");
+ /* Error signaled when there's a problem with detecting a coding system. */
DEFSYM (Qcoding_system_error, "coding-system-error");
Fput (Qcoding_system_error, Qerror_conditions,
listn (CONSTYPE_PURE, 2, Qcoding_system_error, Qerror));
DEFSYM (Qvalid_codes, "valid-codes");
+ /* Coding system emacs-mule and raw-text are for converting only
+ end-of-line format. */
DEFSYM (Qemacs_mule, "emacs-mule");
DEFSYM (QCcategory, ":category");
DEFSYM (Qinsufficient_source, "insufficient-source");
DEFSYM (Qinvalid_source, "invalid-source");
DEFSYM (Qinterrupted, "interrupted");
+
+ /* If a symbol has this property, evaluate the value to define the
+ symbol as a coding system. */
DEFSYM (Qcoding_system_define_form, "coding-system-define-form");
defsubr (&Scoding_system_p);
Use of this variable for character code unification was rendered
obsolete in Emacs 23.1 and later, since Unicode is now the basis of
internal character representation. */);
- Vtranslation_table_for_input = Qnil;
-
- {
- Lisp_Object args[coding_arg_undecided_max];
- Lisp_Object plist[16];
- int i;
-
- for (i = 0; i < coding_arg_undecided_max; i++)
- args[i] = Qnil;
-
- plist[0] = intern_c_string (":name");
- plist[1] = args[coding_arg_name] = Qno_conversion;
- plist[2] = intern_c_string (":mnemonic");
- plist[3] = args[coding_arg_mnemonic] = make_number ('=');
- plist[4] = intern_c_string (":coding-type");
- plist[5] = args[coding_arg_coding_type] = Qraw_text;
- plist[6] = intern_c_string (":ascii-compatible-p");
- plist[7] = args[coding_arg_ascii_compatible_p] = Qt;
- plist[8] = intern_c_string (":default-char");
- plist[9] = args[coding_arg_default_char] = make_number (0);
- plist[10] = intern_c_string (":for-unibyte");
- plist[11] = args[coding_arg_for_unibyte] = Qt;
- plist[12] = intern_c_string (":docstring");
- plist[13] = build_pure_c_string ("Do no conversion.\n\
-\n\
-When you visit a file with this coding, the file is read into a\n\
-unibyte buffer as is, thus each byte of a file is treated as a\n\
-character.");
- plist[14] = intern_c_string (":eol-type");
- plist[15] = args[coding_arg_eol_type] = Qunix;
- args[coding_arg_plist] = Flist (16, plist);
- Fdefine_coding_system_internal (coding_arg_max, args);
-
- plist[1] = args[coding_arg_name] = Qundecided;
- plist[3] = args[coding_arg_mnemonic] = make_number ('-');
- plist[5] = args[coding_arg_coding_type] = Qundecided;
- /* This is already set.
- plist[7] = args[coding_arg_ascii_compatible_p] = Qt; */
- plist[8] = intern_c_string (":charset-list");
- plist[9] = args[coding_arg_charset_list] = Fcons (Qascii, Qnil);
- plist[11] = args[coding_arg_for_unibyte] = Qnil;
- plist[13] = build_pure_c_string ("No conversion on encoding, automatic conversion on decoding.");
- plist[15] = args[coding_arg_eol_type] = Qnil;
- args[coding_arg_plist] = Flist (16, plist);
- args[coding_arg_undecided_inhibit_null_byte_detection] = make_number (0);
- args[coding_arg_undecided_inhibit_iso_escape_detection] = make_number (0);
- Fdefine_coding_system_internal (coding_arg_undecided_max, args);
- }
+ Vtranslation_table_for_input = Qnil;
+
+ Lisp_Object args[coding_arg_undecided_max];
+ memclear (args, sizeof args);
+
+ Lisp_Object plist[] =
+ {
+ QCname,
+ args[coding_arg_name] = Qno_conversion,
+ QCmnemonic,
+ args[coding_arg_mnemonic] = make_number ('='),
+ intern_c_string (":coding-type"),
+ args[coding_arg_coding_type] = Qraw_text,
+ QCascii_compatible_p,
+ args[coding_arg_ascii_compatible_p] = Qt,
+ QCdefault_char,
+ args[coding_arg_default_char] = make_number (0),
+ intern_c_string (":for-unibyte"),
+ args[coding_arg_for_unibyte] = Qt,
+ intern_c_string (":docstring"),
+ (build_pure_c_string
+ ("Do no conversion.\n"
+ "\n"
+ "When you visit a file with this coding, the file is read into a\n"
+ "unibyte buffer as is, thus each byte of a file is treated as a\n"
+ "character.")),
+ intern_c_string (":eol-type"),
+ args[coding_arg_eol_type] = Qunix,
+ };
+ args[coding_arg_plist] = CALLMANY (Flist, plist);
+ Fdefine_coding_system_internal (coding_arg_max, args);
+
+ plist[1] = args[coding_arg_name] = Qundecided;
+ plist[3] = args[coding_arg_mnemonic] = make_number ('-');
+ plist[5] = args[coding_arg_coding_type] = Qundecided;
+ /* This is already set.
+ plist[7] = args[coding_arg_ascii_compatible_p] = Qt; */
+ plist[8] = intern_c_string (":charset-list");
+ plist[9] = args[coding_arg_charset_list] = Fcons (Qascii, Qnil);
+ plist[11] = args[coding_arg_for_unibyte] = Qnil;
+ plist[13] = build_pure_c_string ("No conversion on encoding, "
+ "automatic conversion on decoding.");
+ plist[15] = args[coding_arg_eol_type] = Qnil;
+ args[coding_arg_plist] = CALLMANY (Flist, plist);
+ args[coding_arg_undecided_inhibit_null_byte_detection] = make_number (0);
+ args[coding_arg_undecided_inhibit_iso_escape_detection] = make_number (0);
+ Fdefine_coding_system_internal (coding_arg_undecided_max, args);
setup_coding_system (Qno_conversion, &safe_terminal_coding);
- {
- int i;
+ for (int i = 0; i < coding_category_max; i++)
+ Fset (AREF (Vcoding_category_table, i), Qno_conversion);
- for (i = 0; i < coding_category_max; i++)
- Fset (AREF (Vcoding_category_table, i), Qno_conversion);
- }
#if defined (DOS_NT)
system_eol_type = Qdos;
#else