branch: elpa/keycast
commit 82affc7bb85b4b7c53c849cfd216b115d9f84972
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>
keycast-mode-line-mode: Handle being enabled twice
A user may enable the mode twice, without disabling it in between.
The second time, this has to be done non-interactively, because
invoking a mode command interactively toggles the mode. I consider
that a user-error, but let's recover from it anyway.
Closes #34.
---
keycast.el | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/keycast.el b/keycast.el
index d2e835ae6e..a5255f44b3 100644
--- a/keycast.el
+++ b/keycast.el
@@ -538,6 +538,7 @@ t to show the actual COMMAND, or a symbol to be shown
instead."
(defvar keycast--mode-line-removed-tail nil)
(defvar keycast--temporary-mode-line nil)
(defvar keycast--mode-line-modified-buffers nil)
+(defvar keycast--mode-line-enabled nil)
;;;###autoload
(define-minor-mode keycast-mode-line-mode
@@ -545,6 +546,9 @@ t to show the actual COMMAND, or a symbol to be shown
instead."
:global t
(cond
(keycast-mode-line-mode
+ (when keycast--mode-line-enabled
+ (keycast-mode-line-mode -1)
+ (setq keycast-mode-line-mode t))
(let ((format (default-value 'mode-line-format)))
(cond ((not format)
(setq keycast--temporary-mode-line t)
@@ -565,7 +569,8 @@ t to show the actual COMMAND, or a symbol to be shown
instead."
(t
(setcdr cons (cl-pushnew 'keycast-mode-line (cdr cons)))))
(add-hook 'post-command-hook #'keycast--update t)
- (add-hook 'minibuffer-exit-hook #'keycast--minibuffer-exit t)))
+ (add-hook 'minibuffer-exit-hook #'keycast--minibuffer-exit t))
+ (setq keycast--mode-line-enabled t))
(t
(let ((cons (keycast--tree-member 'keycast-mode-line
(default-value 'mode-line-format))))
@@ -588,7 +593,8 @@ t to show the actual COMMAND, or a symbol to be shown
instead."
(keycast--tree-member 'keycast-mode-line mode-line-format 'delete))))
(unless (keycast--mode-active-p)
(remove-hook 'post-command-hook #'keycast--update)
- (remove-hook 'minibuffer-exit-hook #'keycast--minibuffer-exit)))))
+ (remove-hook 'minibuffer-exit-hook #'keycast--minibuffer-exit))
+ (setq keycast--mode-line-enabled nil))))
(defvar keycast-mode-line
'(:eval