Mercurial > emacs
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 |