[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] 86/287: Always suppress shortcuts in read-key-lookup
From: |
Matthew Fidler |
Subject: |
[elpa] 86/287: Always suppress shortcuts in read-key-lookup |
Date: |
Wed, 02 Jul 2014 14:44:51 +0000 |
mlf176f2 pushed a commit to branch externals/ergoemacs-mode
in repository elpa.
commit dd27ce525d060226d330f5ea4edeb7256183d253
Author: Matthew L. Fidler <address@hidden>
Date: Fri Jun 13 07:56:56 2014 -0500
Always suppress shortcuts in read-key-lookup
---
ergoemacs-shortcuts.el | 93 ++++++++++++++---------------------------------
1 files changed, 28 insertions(+), 65 deletions(-)
diff --git a/ergoemacs-shortcuts.el b/ergoemacs-shortcuts.el
index 346ee03..712ff7f 100644
--- a/ergoemacs-shortcuts.el
+++ b/ergoemacs-shortcuts.el
@@ -819,27 +819,11 @@ FORCE-KEY forces keys like <escape> to work properly.
(prog1
(let* (ergoemacs-read-input-keys
ergoemacs-modal
- ;; Turn on `ergoemacs-shortcut-keys' layer when the
- ;; prior-key is defined on `ergoemacs-read-input-keymap'.
- ;; This way keys like <apps> will read the from the
- ;; `ergoemacs-shortcut-keys' layer and then discontinue
- ;; reading from that layer.
- ;;
- ;; Also turn on ergoemacs-shortcut-keys as long as this
- ;; isn't a recursive call.
- (ergoemacs-shortcut-keys
- (if prior-key
- (lookup-key ergoemacs-read-input-keymap prior-key)
- (if (= 1 (length key)) t
- (not (and (boundp 'ergoemacs-read-key-recursive)
- ergoemacs-read-key-recursive)))))
+ ergoemacs-shortcut-keys
+ (hash (and key (gethash key ergoemacs-command-shortcuts-hash)))
lookup
tmp-overlay use-override
- ergoemacs-read-key-recursive
- tmp ret fn hash)
- (when (or (equal key [3]) (equal key [24])) ;; C-c or C-x
- (setq ergoemacs-shortcut-keys nil))
- (setq ergoemacs-read-key-recursive t)
+ tmp ret fn)
(unwind-protect
(progn
;; Install `overriding-terminal-local-map' without
@@ -877,7 +861,27 @@ FORCE-KEY forces keys like <escape> to work properly.
(overlay-put tmp-overlay 'keymap lookup)
(overlay-put tmp-overlay 'priority 536870910))))
(cond
- ((progn
+ ;; Apply shortcuts (even though masked).
+ ((and key (member key ergoemacs-shortcut-prefix-keys))
+ ;; Shortcut prefix key, wait for more.
+ (setq ret 'keymap))
+ ((and hash (commandp (nth 0 hash) t))
+ ;; Shorcut command
+ (ergoemacs-read-key--echo-command
+ pretty-key (or (and (symbolp (nth 0 hash)) (symbol-name (nth
0 hash)))
+ (ergoemacs-unicode-char "λ" "lambda")))
+ (ergoemacs-shortcut-remap (nth 0 hash))
+ (setq ergoemacs-single-command-keys nil)
+ (setq ret 'function-remap))
+ ((and hash (stringp (nth 0 (nth 0 hash))) (not (nth 1 (nth 0
hash))))
+ ;; Shortcut character.
+ (ergoemacs-read-key--send-unread (read-kbd-macro (nth 0 (nth 0
hash)) t) lookup use-override)
+ (setq ret 'unread))
+ ((and hash (stringp (nth 0 (nth 0 hash))))
+ ;; Shorcut to another key combination/translation
+ ;; Reset `ergoemacs-read-key'
+ (setq ret (list (nth 0 (nth 0 hash)) (nth 1 (nth 0 hash)) (nth
1 (nth 0 hash)))))
+ ((progn ;; key translations first, just like emacs.
(setq tmp (lookup-key local-function-key-map key))
(when (and tmp (integerp tmp))
(setq tmp nil))
@@ -888,7 +892,7 @@ FORCE-KEY forces keys like <escape> to work properly.
tmp)
;; Should use emacs key translation.
(cond
- ((keymapp tmp)
+ ((or (keymapp tmp))
(setq ret 'keymap))
((and ergoemacs-describe-key (vectorp tmp))
(setq ergoemacs-single-command-keys nil)
@@ -923,54 +927,16 @@ FORCE-KEY forces keys like <escape> to work properly.
(setq ret 'local-function-override)))
;; Does this call a function?
((progn
- (setq hash (gethash key ergoemacs-command-shortcuts-hash))
(setq fn (key-binding key))
(setq ret (ergoemacs-read-key-lookup-get-ret fn))
(or ret (commandp fn t)))
(unless ret
(cond
- ((and hash (eq 'string (type-of (nth 0 hash)))
- (memq (nth 1 hash)
- (let ((ret '()))
- (maphash
- (lambda(yyy x)
- (push yyy ret))
- ergoemacs-translations)
- ret)))
- ;; Reset the `ergoemacs-read-key'
- ;; List in form of key type first-type
- (setq ret (list (nth 0 hash) (nth 1 hash) (nth 1 hash))))
- ((and hash (eq 'string (type-of (nth 0 hash))))
- (setq ergoemacs-mark-active
- (or (and mark-active transient-mark-mode)
mark-active))
- (setq ergoemacs-single-command-keys (read-kbd-macro (nth 0
hash)))
- (setq prefix-arg current-prefix-arg)
- (setq unread-command-events (append (listify-key-sequence
(read-kbd-macro (nth 0 hash))) unread-command-events))
- (ergoemacs-defer-post-command-hook)
- (when lookup
- (define-key lookup [ergoemacs-single-command-keys]
'ignore)
- (if (not use-override)
- (setq ergoemacs-read-key-overriding-overlay-save
tmp-overlay)
- (setq
ergoemacs-read-key-overriding-terminal-local-save overriding-terminal-local-map)
- (setq overriding-terminal-local-map lookup)))
- (setq ret 'kbd-shortcut))
- ((and hash (commandp (nth 0 hash) t))
- (ergoemacs-read-key--echo-command
- pretty-key (or (and (symbolp (nth 0 hash)) (symbol-name
(nth 0 hash)))
- (ergoemacs-unicode-char "λ" "lambda")))
- (ergoemacs-shortcut-remap (nth 0 hash))
- (setq ergoemacs-single-command-keys nil)
- (setq ret 'function-remap))
((and ergoemacs-shortcut-keys (not ergoemacs-describe-key)
(not ergoemacs-single-command-keys))
(if (nth 0 hash)
(progn
- (setq fn (nth 0 hash))
- ;; Send Shortcut key directly
- (when (ignore-errors (and (stringp (nth 0 fn))
- (or (not (nth 1 fn))
- (eq (nth 1 fn)
'normal))))
- (setq key (read-kbd-macro (nth 0 fn) t))))
+ (setq fn (nth 0 hash)))
(setq fn (key-binding key))
(setq fn (or (command-remapping fn (point)) fn)))
(ergoemacs-read-key--echo-command pretty-key fn)
@@ -1006,10 +972,7 @@ FORCE-KEY forces keys like <escape> to work properly.
(ergoemacs-with-global
(key-binding key)))))))
(setq ret (ergoemacs-read-key-lookup-get-ret fn))
- (or ret
- (condition-case err
- (interactive-form fn)
- nil)))
+ (or ret (commandp fn t)))
(unless ret
(setq fn (or (command-remapping fn (point)) fn))
(setq ergoemacs-single-command-keys key)
@@ -1026,7 +989,7 @@ FORCE-KEY forces keys like <escape> to work properly.
(ergoemacs-read-key-call fn nil key)
(setq ergoemacs-single-command-keys nil)
(setq ret 'function-global-or-override)))))
- ;; Fix tempoary over
+ ;; Fix tempoary overlay
(when (and tmp-overlay (not
ergoemacs-read-key-overriding-overlay-save))
(delete-overlay tmp-overlay)))
ret)
- [elpa] 76/287: Only Issue 86 still persists., (continued)
- [elpa] 76/287: Only Issue 86 still persists., Matthew Fidler, 2014/07/02
- [elpa] 77/287: Ensure ergoemacs-global-override-rm-keys is a list of vectors, Matthew Fidler, 2014/07/02
- [elpa] 80/287: Reverse order to allow <apps> h z processing., Matthew Fidler, 2014/07/02
- [elpa] 82/287: Ignored keys shouldn't be in the shortcut hash, Matthew Fidler, 2014/07/02
- [elpa] 83/287: Allow ergoemacs-rm-key to remove a list, Matthew Fidler, 2014/07/02
- [elpa] 84/287: Break-out sending unread-command events, Matthew Fidler, 2014/07/02
- [elpa] 85/287: Keep track of shortcut key prefixes, Matthew Fidler, 2014/07/02
- [elpa] 81/287: Added version menu back, Matthew Fidler, 2014/07/02
- [elpa] 87/287: Remove "Z" in theme component, Matthew Fidler, 2014/07/02
- [elpa] 144/287: Generate image based on options, Matthew Fidler, 2014/07/02
- [elpa] 86/287: Always suppress shortcuts in read-key-lookup,
Matthew Fidler <=
- [elpa] 88/287: Apply defered variables/modes. Fix Issue #216, Matthew Fidler, 2014/07/02
- [elpa] 147/287: Allow emacs23 to fail., Matthew Fidler, 2014/07/02
- [elpa] 78/287: Faster ignore globally defined key, Matthew Fidler, 2014/07/02
- [elpa] 149/287: Backport `make-composed-keymap'., Matthew Fidler, 2014/07/02
- [elpa] 148/287: Fix more compiler issues and typos, Matthew Fidler, 2014/07/02
- [elpa] 145/287: pushnew instead of add-to-list, Matthew Fidler, 2014/07/02
- [elpa] 152/287: Remove emacs23 testing, Matthew Fidler, 2014/07/02
- [elpa] 150/287: Note that ergoemacs-mode requires emacs 24.1, Matthew Fidler, 2014/07/02
- [elpa] 153/287: Update expections., Matthew Fidler, 2014/07/02
- [elpa] 154/287: Remove ert dependence. Its in emacs 24, Matthew Fidler, 2014/07/02