comparison src/coding.c @ 90272:f1df126ec7de

Sync to HEAD for handling autoload-coding-system. (Qcoding_system_define_form): New variable. (syms_of_coding): Intern and staticpro it. (Fcoding_system_p): Check Qcoding_system_define_form. (Fcheck_coding_system): Try to autoload the definition of CODING-SYSTEM.
author Kenichi Handa <handa@m17n.org>
date Thu, 19 Jan 2006 07:20:52 +0000
parents 80fb4c061e99
children 72d8a45f6c9f
comparison
equal deleted inserted replaced
90271:6ef33f7b3f3c 90272:f1df126ec7de
322 Lisp_Object Qstart_process, Qopen_network_stream; 322 Lisp_Object Qstart_process, Qopen_network_stream;
323 Lisp_Object Qtarget_idx; 323 Lisp_Object Qtarget_idx;
324 324
325 Lisp_Object Qinsufficient_source, Qinconsistent_eol, Qinvalid_source; 325 Lisp_Object Qinsufficient_source, Qinconsistent_eol, Qinvalid_source;
326 Lisp_Object Qinterrupted, Qinsufficient_memory; 326 Lisp_Object Qinterrupted, Qinsufficient_memory;
327
328 /* If a symbol has this property, evaluate the value to define the
329 symbol as a coding system. */
330 static Lisp_Object Qcoding_system_define_form;
327 331
328 int coding_system_require_warning; 332 int coding_system_require_warning;
329 333
330 Lisp_Object Vselect_safe_coding_system_function; 334 Lisp_Object Vselect_safe_coding_system_function;
331 335
7058 See the documentation of `define-coding-system' for information 7062 See the documentation of `define-coding-system' for information
7059 about coding-system objects. */) 7063 about coding-system objects. */)
7060 (obj) 7064 (obj)
7061 Lisp_Object obj; 7065 Lisp_Object obj;
7062 { 7066 {
7063 return ((NILP (obj) || CODING_SYSTEM_P (obj)) ? Qt : Qnil); 7067 if (NILP (obj)
7068 || CODING_SYSTEM_ID (obj) >= 0)
7069 return Qt;
7070 if (! SYMBOLP (obj)
7071 || NILP (Fget (obj, Qcoding_system_define_form)))
7072 return Qnil;
7073 return Qt;
7064 } 7074 }
7065 7075
7066 DEFUN ("read-non-nil-coding-system", Fread_non_nil_coding_system, 7076 DEFUN ("read-non-nil-coding-system", Fread_non_nil_coding_system,
7067 Sread_non_nil_coding_system, 1, 1, 0, 7077 Sread_non_nil_coding_system, 1, 1, 0,
7068 doc: /* Read a coding system from the minibuffer, prompting with string PROMPT. */) 7078 doc: /* Read a coding system from the minibuffer, prompting with string PROMPT. */)
7101 It is valid if it is nil or a symbol defined as a coding system by the 7111 It is valid if it is nil or a symbol defined as a coding system by the
7102 function `define-coding-system'. */) 7112 function `define-coding-system'. */)
7103 (coding_system) 7113 (coding_system)
7104 Lisp_Object coding_system; 7114 Lisp_Object coding_system;
7105 { 7115 {
7106 CHECK_SYMBOL (coding_system); 7116 Lisp_Object define_form;
7117
7118 define_form = Fget (coding_system, Qcoding_system_define_form);
7119 if (! NILP (define_form))
7120 {
7121 Fput (coding_system, Qcoding_system_define_form, Qnil);
7122 safe_eval (define_form);
7123 }
7107 if (!NILP (Fcoding_system_p (coding_system))) 7124 if (!NILP (Fcoding_system_p (coding_system)))
7108 return coding_system; 7125 return coding_system;
7109 while (1) 7126 while (1)
7110 Fsignal (Qcoding_system_error, Fcons (coding_system, Qnil)); 7127 Fsignal (Qcoding_system_error, Fcons (coding_system, Qnil));
7111 } 7128 }
9320 DEFSYM (Qinsufficient_source, "insufficient-source"); 9337 DEFSYM (Qinsufficient_source, "insufficient-source");
9321 DEFSYM (Qinconsistent_eol, "inconsistent-eol"); 9338 DEFSYM (Qinconsistent_eol, "inconsistent-eol");
9322 DEFSYM (Qinvalid_source, "invalid-source"); 9339 DEFSYM (Qinvalid_source, "invalid-source");
9323 DEFSYM (Qinterrupted, "interrupted"); 9340 DEFSYM (Qinterrupted, "interrupted");
9324 DEFSYM (Qinsufficient_memory, "insufficient-memory"); 9341 DEFSYM (Qinsufficient_memory, "insufficient-memory");
9342 DEFSYM (Qcoding_system_define_form, "coding-system-define-form");
9325 9343
9326 defsubr (&Scoding_system_p); 9344 defsubr (&Scoding_system_p);
9327 defsubr (&Sread_coding_system); 9345 defsubr (&Sread_coding_system);
9328 defsubr (&Sread_non_nil_coding_system); 9346 defsubr (&Sread_non_nil_coding_system);
9329 defsubr (&Scheck_coding_system); 9347 defsubr (&Scheck_coding_system);