comparison lisp/international/quail.el @ 21082:ca3bd6ec875d

(quail-defrule-internal): New arg REPLACE. (quail-defrule): Call quail-defrule-internal with REPLACE t.
author Richard M. Stallman <rms@gnu.org>
date Fri, 06 Mar 1998 21:33:37 +0000
parents a47662abcc23
children 70c5f2b7e3a8
comparison
equal deleted inserted replaced
21081:f7d33c30712e 21082:ca3bd6ec875d
796 it is used to handle KEY." 796 it is used to handle KEY."
797 `(quail-install-map 797 `(quail-install-map
798 ',(let ((l rules) 798 ',(let ((l rules)
799 (map (list nil))) 799 (map (list nil)))
800 (while l 800 (while l
801 (quail-defrule-internal (car (car l)) (car (cdr (car l))) map) 801 (quail-defrule-internal (car (car l)) (car (cdr (car l))) map t)
802 (setq l (cdr l))) 802 (setq l (cdr l)))
803 map))) 803 map)))
804 804
805 ;;;###autoload 805 ;;;###autoload
806 (defun quail-install-map (map) 806 (defun quail-install-map (map)
839 (error "No Quail package `%s'" name)) 839 (error "No Quail package `%s'" name))
840 (setq quail-current-package package))) 840 (setq quail-current-package package)))
841 (quail-defrule-internal key translation (quail-map))) 841 (quail-defrule-internal key translation (quail-map)))
842 842
843 ;;;###autoload 843 ;;;###autoload
844 (defun quail-defrule-internal (key trans map) 844 (defun quail-defrule-internal (key trans map &optional append)
845 "Define KEY as TRANS in a Quail map MAP." 845 "Define KEY as TRANS in a Quail map MAP."
846 (if (null (stringp key)) 846 (if (null (stringp key))
847 "Invalid Quail key `%s'" key) 847 "Invalid Quail key `%s'" key)
848 (if (not (or (numberp trans) (stringp trans) (vectorp trans) 848 (if (not (or (numberp trans) (stringp trans) (vectorp trans)
849 (consp trans) 849 (consp trans)
889 ;; define a rule for "AB" as a symbol but a rule 889 ;; define a rule for "AB" as a symbol but a rule
890 ;; for "ABC" is already defined. 890 ;; for "ABC" is already defined.
891 (error "Quail key %s is too short" key) 891 (error "Quail key %s is too short" key)
892 (setcdr entry trans)) 892 (setcdr entry trans))
893 (setcdr entry (append trans (cdr map))))) 893 (setcdr entry (append trans (cdr map)))))
894 (setcar map trans))))) 894 (if (and append (stringp (car map)) (stringp trans))
895 (setcar map (concat (car map) trans))
896 (setcar map trans))))))
895 897
896 (defun quail-get-translation (def key len) 898 (defun quail-get-translation (def key len)
897 "Return the translation specified as DEF for KEY of length LEN. 899 "Return the translation specified as DEF for KEY of length LEN.
898 The translation is either a character or a cons of the form (INDEX . VECTOR), 900 The translation is either a character or a cons of the form (INDEX . VECTOR),
899 where VECTOR is a vector of candidates (character or string) for 901 where VECTOR is a vector of candidates (character or string) for