# HG changeset patch # User Kenichi Handa # Date 1065490152 0 # Node ID f4d906e31662a15cb5b8861d3e727f3ca5ada435 # Parent d1e36b6d5891a179e67f6792c47bdeae8aa9a95d (Qcoding_system_define_form): New variable. (syms_of_coding): Intern and staticpro it. (Fcheck_coding_system): Try to autoload the definition of CODING-SYSTEM. diff -r d1e36b6d5891 -r f4d906e31662 src/coding.c --- a/src/coding.c Mon Oct 06 22:56:43 2003 +0000 +++ b/src/coding.c Tue Oct 07 01:29:12 2003 +0000 @@ -366,6 +366,10 @@ Lisp_Object Qstart_process, Qopen_network_stream; Lisp_Object Qtarget_idx; +/* If a symbol has this property, evaluate the value to define the + symbol as a coding system. */ +Lisp_Object Qcoding_system_define_form; + Lisp_Object Vselect_safe_coding_system_function; int coding_system_require_warning; @@ -6375,7 +6379,14 @@ (coding_system) Lisp_Object coding_system; { - CHECK_SYMBOL (coding_system); + Lisp_Object define_form; + + define_form = Fget (coding_system, Qcoding_system_define_form); + if (! NILP (define_form)) + { + Fput (coding_system, Qcoding_system_define_form, Qnil); + safe_eval (define_form); + } if (!NILP (Fcoding_system_p (coding_system))) return coding_system; while (1) @@ -7595,6 +7606,9 @@ Qutf_8 = intern ("utf-8"); staticpro (&Qutf_8); + Qcoding_system_define_form = intern ("coding-system-define-form"); + staticpro (&Qcoding_system_define_form); + defsubr (&Scoding_system_p); defsubr (&Sread_coding_system); defsubr (&Sread_non_nil_coding_system);