changeset 52794:f4d906e31662

(Qcoding_system_define_form): New variable. (syms_of_coding): Intern and staticpro it. (Fcheck_coding_system): Try to autoload the definition of CODING-SYSTEM.
author Kenichi Handa <handa@m17n.org>
date Tue, 07 Oct 2003 01:29:12 +0000
parents d1e36b6d5891
children 2e3d2f94a2ba
files src/coding.c
diffstat 1 files changed, 15 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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);