summaryrefslogtreecommitdiff
path: root/lisp/international/quail.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/international/quail.el')
-rw-r--r--lisp/international/quail.el17
1 files changed, 16 insertions, 1 deletions
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index 6d26a01aa35..54712c31dcd 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -127,7 +127,22 @@ See the documentation of `quail-define-package' for the other elements.")
(nth 0 quail-current-package))
(defsubst quail-title ()
"Return the title of the current Quail package."
- (nth 1 quail-current-package))
+ (let ((title (nth 1 quail-current-package)))
+ ;; TITLE may be a string or a list. If it is a list, each element
+ ;; is a string or the form (VAR STR1 STR2), and the interpretation
+ ;; of the list is the same as that of mode-line-format.
+ (if (stringp title)
+ title
+ (condition-case nil
+ (mapconcat
+ (lambda (x)
+ (cond ((stringp x) x)
+ ((and (listp x) (symbolp (car x)) (= (length x) 3))
+ (if (symbol-value (car x))
+ (nth 1 x) (nth 2 x)))
+ (t "")))
+ title "")
+ (error "")))))
(defsubst quail-map ()
"Return the translation map of the current Quail package."
(nth 2 quail-current-package))