branch: externals/ergoemacs-mode
commit 683020a92bbcb4a9135f277c6e90a338a49f224e
Author: Matthew Fidler <[email protected]>
Commit: Matthew Fidler <[email protected]>
Fix `ergoemacs-read-key` advice to work better with `magit`
---
ergoemacs-advice.el | 16 ++++++++++++----
ergoemacs-mode.el | 4 ++--
ergoemacs-themes.el | 1 +
3 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/ergoemacs-advice.el b/ergoemacs-advice.el
index 39da47e911..de7756f9f8 100644
--- a/ergoemacs-advice.el
+++ b/ergoemacs-advice.el
@@ -99,10 +99,18 @@ TYPE is the type of translation installed."
(if (and ergoemacs-mode (not ergoemacs--temporary-disable))
(ergoemacs-mode--undefined-advice)
(call-interactively orig-fun)))
-
-(defun ergoemacs-advice-read-key ()
- "Drop single command keys for read-key." ; For compataiblity with emacs 25.5
- (setq ergoemacs-command-loop--single-command-keys nil))
+
+(defun ergoemacs-read-key (orig-fun &rest args)
+ "Allow `ergoemacs-mode' to add put prompt into original keys."
+ (if (not (and ergoemacs-mode (not ergoemacs--temporary-disable)))
+ (apply orig-fun args)
+ (if (not (= 1 (length args)))
+ (apply orig-fun args)
+ (setq ergoemacs-command-loop--read-key-prompt
+ (nth 0 args))
+ (unwind-protect
+ (apply orig-fun args)
+ (setq ergoemacs-command-loop--read-key-prompt "")))))
(provide 'ergoemacs-advice)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/ergoemacs-mode.el b/ergoemacs-mode.el
index 7543ac9d66..32a32eadf9 100644
--- a/ergoemacs-mode.el
+++ b/ergoemacs-mode.el
@@ -483,13 +483,13 @@ after initializing ergoemacs-mode.
(ergoemacs-mode-send-emacs-keys .
,ergoemacs--send-emacs-keys-map)))
(add-hook 'emulation-mode-map-alists ergoemacs-override-alist)
(advice-add 'undefined :around #'ergoemacs-advice-undefined)
- (advice-add 'read-key :before #'ergoemacs-advice-read-key))
+ (advice-add 'read-key :around #'ergoemacs-read-key))
(defun ergoemacs-remove-override-keymap ()
"Remove `ergoemacs-mode' keymaps."
(remove-hook 'emulation-mode-map-alists 'ergoemacs-override-alist)
(advice-remove 'undefined #'ergoemacs-advice-undefined)
- (advice-remove 'read-key #'ergoemacs-advice-read-key))
+ (advice-remove 'read-key #'ergoemacs-read-key))
;;; Frequently used commands as aliases
diff --git a/ergoemacs-themes.el b/ergoemacs-themes.el
index 3138f75fa5..00e7a38e3b 100644
--- a/ergoemacs-themes.el
+++ b/ergoemacs-themes.el
@@ -1456,6 +1456,7 @@ In a terminal, this can be either arrow keys (e.g. meta+O
A == <up>) or regular
(defvar calc-mode-map)
(defun ergoemacs-install-calc-bindings ()
"Install `calc-mode' bindings."
+ ;; These are above `ergoemacs-mode'
(ergoemacs-save-key-state
'comint-mode-map
(define-key calc-mode-map [remap ergoemacs-undo] 'calc-undo)