comparison src/coding.c @ 89571:242f2cc0134b

(Fdefine_coding_system_alias): Update Vcoding_system_list.
author Kenichi Handa <handa@m17n.org>
date Mon, 06 Oct 2003 11:21:31 +0000
parents 12fbcfebb9ad
children 59d10ebd2a0b
comparison
equal deleted inserted replaced
89570:c92884b9ca4a 89571:242f2cc0134b
8484 return Fsignal (Qwrong_number_of_arguments, 8484 return Fsignal (Qwrong_number_of_arguments,
8485 Fcons (intern ("define-coding-system-internal"), 8485 Fcons (intern ("define-coding-system-internal"),
8486 make_number (nargs))); 8486 make_number (nargs)));
8487 } 8487 }
8488 8488
8489 /* Fixme: should this record the alias relationships for 8489
8490 diagnostics? Should it update coding-system-list? */
8491 DEFUN ("define-coding-system-alias", Fdefine_coding_system_alias, 8490 DEFUN ("define-coding-system-alias", Fdefine_coding_system_alias,
8492 Sdefine_coding_system_alias, 2, 2, 0, 8491 Sdefine_coding_system_alias, 2, 2, 0,
8493 doc: /* Define ALIAS as an alias for CODING-SYSTEM. */) 8492 doc: /* Define ALIAS as an alias for CODING-SYSTEM. */)
8494 (alias, coding_system) 8493 (alias, coding_system)
8495 Lisp_Object alias, coding_system; 8494 Lisp_Object alias, coding_system;
8497 Lisp_Object spec, aliases, eol_type; 8496 Lisp_Object spec, aliases, eol_type;
8498 8497
8499 CHECK_SYMBOL (alias); 8498 CHECK_SYMBOL (alias);
8500 CHECK_CODING_SYSTEM_GET_SPEC (coding_system, spec); 8499 CHECK_CODING_SYSTEM_GET_SPEC (coding_system, spec);
8501 aliases = AREF (spec, 1); 8500 aliases = AREF (spec, 1);
8501 /* ALISES should be a list of length more than zero, and the first
8502 element is a base coding system. Append ALIAS at the tail of the
8503 list. */
8502 while (!NILP (XCDR (aliases))) 8504 while (!NILP (XCDR (aliases)))
8503 aliases = XCDR (aliases); 8505 aliases = XCDR (aliases);
8504 XSETCDR (aliases, Fcons (alias, Qnil)); 8506 XSETCDR (aliases, Fcons (alias, Qnil));
8505 8507
8506 eol_type = AREF (spec, 2); 8508 eol_type = AREF (spec, 2);
8511 8513
8512 subsidiaries = make_subsidiaries (alias); 8514 subsidiaries = make_subsidiaries (alias);
8513 for (i = 0; i < 3; i++) 8515 for (i = 0; i < 3; i++)
8514 Fdefine_coding_system_alias (AREF (subsidiaries, i), 8516 Fdefine_coding_system_alias (AREF (subsidiaries, i),
8515 AREF (eol_type, i)); 8517 AREF (eol_type, i));
8516
8517 ASET (spec, 2, subsidiaries);
8518 } 8518 }
8519 8519
8520 Fputhash (alias, spec, Vcoding_system_hash_table); 8520 Fputhash (alias, spec, Vcoding_system_hash_table);
8521 Vcoding_system_list = Fcons (alias, Vcoding_system_list);
8521 Vcoding_system_alist = Fcons (Fcons (Fsymbol_name (alias), Qnil), 8522 Vcoding_system_alist = Fcons (Fcons (Fsymbol_name (alias), Qnil),
8522 Vcoding_system_alist); 8523 Vcoding_system_alist);
8523 8524
8524 return Qnil; 8525 return Qnil;
8525 } 8526 }