Function: double-translate-key
double-translate-key is a byte-compiled function defined in
double.el.gz.
Signature
(double-translate-key PROMPT)
Source Code
;; Defined in /usr/src/emacs/lisp/double.el.gz
(defun double-translate-key (prompt)
;; Translate input events using double map.
(let ((key last-input-event))
(cond (unread-command-events
;; Artificial event, ignore it.
(vector key))
((and double-prefix-only
(> (length (this-command-keys)) 1))
;; This is not a prefix key, ignore it.
(vector key))
((eq key 'magic-start)
;; End of generated event. See if he will repeat it...
(let ((new (double-read-event prompt))
(entry (assoc double-last-event double-map)))
(force-window-update (selected-window))
(if (eq new double-last-event)
(progn
(setq unread-command-events
(append (make-list (1- (length (nth 1 entry)))
127)
(nth 2 entry)
'(magic-end)
unread-command-events))
(vector 127))
(push new unread-command-events)
[ignore])))
((eq key 'magic-end)
;; End of double event. Ignore.
[ignore])
(t
;; New key.
(let ((exp (nth 1 (assoc key double-map))))
(setq double-last-event key)
(setq unread-command-events
(append (substring exp 1) '(magic-start)
unread-command-events))
(vector (aref exp 0)))))))