summaryrefslogtreecommitdiff
path: root/lisp/international/quail.el
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2018-07-21 12:10:20 +0300
committerEli Zaretskii <eliz@gnu.org>2018-07-21 12:10:20 +0300
commit03e3440dbbfea40b449a9f6f23a3630664275d11 (patch)
tree37ab03786de0ca04d0a8bfc7a74546f68a2c61fd /lisp/international/quail.el
parent1780502da6b9ac8d3063dfd56f675318568283dc (diff)
downloademacs-03e3440dbbfea40b449a9f6f23a3630664275d11.tar.gz
Fix recording keyboard macros when input method is active
* lisp/international/quail.el (quail-start-translation) (quail-start-conversion): Bind inhibit--record-char to t for the first character of a translated sequence. * src/keyboard.c (record_char): Don't record events from macros to dribble file, per documentation. (Fopen_dribble_file): Doc fix. (syms_of_keyboard) <inhibit--record-char>: New variable. (record_char): Don't record input event if inhibit--record-char is non-nil. (Bug#32108)
Diffstat (limited to 'lisp/international/quail.el')
-rw-r--r--lisp/international/quail.el20
1 files changed, 16 insertions, 4 deletions
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index eece836354c..ec15ccaaf76 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -1394,12 +1394,13 @@ Return the input string."
(generated-events nil) ;FIXME: What is this?
(input-method-function nil)
(modified-p (buffer-modified-p))
- last-command-event last-command this-command)
+ last-command-event last-command this-command inhibit-record)
(setq quail-current-key ""
quail-current-str ""
quail-translating t)
(if key
- (setq unread-command-events (cons key unread-command-events)))
+ (setq unread-command-events (cons key unread-command-events)
+ inhibit-record t))
(while quail-translating
(set-buffer-modified-p modified-p)
(quail-show-guidance)
@@ -1408,8 +1409,13 @@ Return the input string."
(or input-method-previous-message "")
quail-current-str
quail-guidance-str)))
+ ;; We inhibit record_char only for the first key,
+ ;; because it was already recorded before read_char
+ ;; called quail-input-method.
+ (inhibit--record-char inhibit-record)
(keyseq (read-key-sequence prompt nil nil t))
(cmd (lookup-key (quail-translation-keymap) keyseq)))
+ (setq inhibit-record nil)
(if (if key
(and (commandp cmd) (not (eq cmd 'quail-other-command)))
(eq cmd 'quail-self-insert-command))
@@ -1453,14 +1459,15 @@ Return the input string."
(generated-events nil) ;FIXME: What is this?
(input-method-function nil)
(modified-p (buffer-modified-p))
- last-command-event last-command this-command)
+ last-command-event last-command this-command inhibit-record)
(setq quail-current-key ""
quail-current-str ""
quail-translating t
quail-converting t
quail-conversion-str "")
(if key
- (setq unread-command-events (cons key unread-command-events)))
+ (setq unread-command-events (cons key unread-command-events)
+ inhibit-record t))
(while quail-converting
(set-buffer-modified-p modified-p)
(or quail-translating
@@ -1476,8 +1483,13 @@ Return the input string."
quail-conversion-str
quail-current-str
quail-guidance-str)))
+ ;; We inhibit record_char only for the first key,
+ ;; because it was already recorded before read_char
+ ;; called quail-input-method.
+ (inhibit--record-char inhibit-record)
(keyseq (read-key-sequence prompt nil nil t))
(cmd (lookup-key (quail-conversion-keymap) keyseq)))
+ (setq inhibit-record nil)
(if (if key (commandp cmd) (eq cmd 'quail-self-insert-command))
(progn
(setq last-command-event (aref keyseq (1- (length keyseq)))