;;; quail.el --- provides simple input method for multilingual text
-;; Copyright (C) 1997-1998, 2000-2015 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2000-2016 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
See also the documentation of `quail-define-package'."
(nth 11 quail-current-package))
(defsubst quail-overlay-plist ()
- "Return property list of an overly used in the current Quail package."
+ "Return property list of an overlay used in the current Quail package."
(nth 12 quail-current-package))
(defsubst quail-update-translation-function ()
"Return a function for updating translation in the current Quail package."
(with-output-to-temp-buffer "*Help*"
(princ "Quail package \"")
(princ package-name)
- (princ "\" can't be activated\n because library \"")
+ (princ (substitute-command-keys
+ "\" can't be activated\n because library \""))
(princ (car libraries))
- (princ "\" is not in `load-path'.
+ (princ (substitute-command-keys "\" is not in `load-path'.
The most common case is that you have not yet installed appropriate
libraries in LEIM (Libraries of Emacs Input Method) which is
distributed separately from Emacs.
-LEIM is available from the same ftp directory as Emacs."))
+LEIM is available from the same ftp directory as Emacs.")))
(error "Can't use the Quail package `%s'" package-name))
(setq libraries (cdr libraries))))))
(quail-select-package package-name)
"Standard keyboard layout of printable characters Quail assumes.
See the documentation of `quail-keyboard-layout' for this format.
This layout is almost the same as that of VT100,
- but the location of key \\ (backslash) is just right of key ' (single-quote),
+ but the location of key \\ (backslash) is just right of key \\=' (single-quote),
not right of RETURN key.")
(defconst quail-keyboard-layout-len 180)
keyseq)))
(defun quail-insert-kbd-layout (kbd-layout)
-"Insert the visual keyboard layout table according to KBD-LAYOUT.
+ "Insert the visual keyboard layout table according to KBD-LAYOUT.
The format of KBD-LAYOUT is the same as `quail-keyboard-layout'."
(let (done-list layout i ch)
+ (setq bidi-paragraph-direction 'left-to-right)
;; At first, convert KBD-LAYOUT to the same size vector that
;; contains translated character or string.
(setq layout (string-to-vector kbd-layout)
(define-error 'quail-error nil)
(defun quail-error (&rest args)
- (signal 'quail-error (apply 'format args)))
+ (signal 'quail-error (apply #'format-message args)))
(defun quail-input-string-to-events (str)
"Convert input string STR to a list of events.
overriding-local-map)
(list key)
(quail-setup-overlays (quail-conversion-keymap))
- (let ((modified-p (buffer-modified-p))
- (buffer-undo-list t)
- (inhibit-modification-hooks t))
+ (with-silent-modifications
(unwind-protect
(let ((input-string (if (quail-conversion-keymap)
(quail-start-conversion key)
(list (aref input-string 0))
(quail-input-string-to-events input-string))))
(quail-delete-overlays)
- (set-buffer-modified-p modified-p)
;; Run this hook only when the current input method doesn't require
;; conversion. When conversion is required, the conversion function
;; should run this hook at a proper timing.
;; KEYSEQ is not defined in the translation keymap.
;; Let's return the event(s) to the caller.
(setq unread-command-events
- (string-to-list (this-single-command-raw-keys)))
+ (append (this-single-command-raw-keys)
+ unread-command-events))
(setq quail-translating nil))))
(quail-delete-region)
quail-current-str)
;; KEYSEQ is not defined in the conversion keymap.
;; Let's return the event(s) to the caller.
(setq unread-command-events
- (string-to-list (this-single-command-raw-keys)))
+ (append (this-single-command-raw-keys)
+ unread-command-events))
(setq quail-converting nil))))
(setq quail-translating nil)
(if (overlay-start quail-conv-overlay)
")\n\n")
(save-restriction
(narrow-to-region (point) (point))
- (insert (quail-docstring))
+ (insert (substitute-command-keys (quail-docstring)))
(goto-char (point-min))
(with-syntax-table emacs-lisp-mode-syntax-table
(while (re-search-forward "\\\\<\\sw\\(\\sw\\|\\s_\\)+>" nil t)
(let ((done-list nil))
;; Show keyboard layout if the current package requests it..
(when (quail-show-layout)
- (insert "
+ (insert (substitute-command-keys "
KEYBOARD LAYOUT
---------------
This input method works by translating individual input characters.
-Assuming that your actual keyboard has the `")
+Assuming that your actual keyboard has the `"))
(help-insert-xref-button
quail-keyboard-layout-type
'quail-keyboard-layout-button
quail-keyboard-layout-type)
- (insert "' layout,
+ (insert (substitute-command-keys "' layout,
translation results in the following \"virtual\" keyboard layout
\(the labels on the keys indicate what character will be produced
by each key, with and without holding Shift):
-")
+"))
(setq done-list
(quail-insert-kbd-layout quail-keyboard-layout))
- (insert "If your keyboard has a different layout, rearranged from
-`")
+ (insert (substitute-command-keys "\
+If your keyboard has a different layout, rearranged from
+`"))
(help-insert-xref-button
"standard"
'quail-keyboard-layout-button "standard")
- (insert "', the \"virtual\" keyboard you get with this input method
+ (insert (substitute-command-keys "\
+', the \"virtual\" keyboard you get with this input method
will be rearranged in the same way.
You can set the variable `quail-keyboard-layout-type' to specify
the physical layout of your keyboard; the tables shown in
documentation of input methods including this one are based on the
physical keyboard layout as specified with that variable.
-")
+"))
(help-insert-xref-button
"[customize keyboard layout]"
'quail-keyboard-customize-button 'quail-keyboard-layout-type)