diff options
author | Joakim Jalap <joakim.jalap@fastmail.com> | 2016-08-13 12:26:27 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2016-08-13 12:26:27 +0300 |
commit | c1021ba910efac334027ad03ff6aed64306fad3c (patch) | |
tree | 00f3563dc739ac8dc33847faa90f8a96efc4397b /lisp/international | |
parent | 6bb55a25fa77ce0f92401aa9945a506e9343aad5 (diff) | |
download | emacs-c1021ba910efac334027ad03ff6aed64306fad3c.tar.gz |
Fix "C-u" when an input method is active
* lisp/international/quail.el (quail-input-method): Defer to the
input method iff 'overriding-terminal-local-map' is
'universal-argument-map' and the given key has no binding there.
(Bug#22958)
Diffstat (limited to 'lisp/international')
-rw-r--r-- | lisp/international/quail.el | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lisp/international/quail.el b/lisp/international/quail.el index f5e390278ca..320d783d410 100644 --- a/lisp/international/quail.el +++ b/lisp/international/quail.el @@ -1333,7 +1333,15 @@ If STR has `advice' text property, append the following special event: (defun quail-input-method (key) (if (or buffer-read-only - overriding-terminal-local-map + (and overriding-terminal-local-map + ;; If the overriding map is `universal-argument-map', that + ;; must mean the user has pressed 'C-u KEY'. If KEY has a + ;; binding in `universal-argument-map' just return + ;; (list KEY), otherwise act as if there was no + ;; overriding map. + (or (not (eq (cadr overriding-terminal-local-map) + universal-argument-map)) + (lookup-key overriding-terminal-local-map (vector key)))) overriding-local-map) (list key) (quail-setup-overlays (quail-conversion-keymap)) |