Skip to content

Commit b4e5cac

Browse files
committed
Add support for keycast
1 parent 5c6e710 commit b4e5cac

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

Eask

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,6 @@
1717
(depends-on "echo-bar")
1818
(depends-on "indent-control")
1919
(depends-on "show-eol")
20+
(depends-on "keycast")
2021

2122
(setq network-security-level 'low) ; see https://github.com/jcs090218/setup-emacs-windows/issues/156#issuecomment-932956432

jcs-echobar.el

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
;; Maintainer: Shen, Jen-Chieh <jcs090218@gmail.com>
77
;; URL: https://github.com/jcs-emacs/jcs-echobar
88
;; Version: 0.1.0
9-
;; Package-Requires: ((emacs "26.1") (echo-bar "1.0.0") (indent-control "0.1.0") (show-eol "0.1.0"))
9+
;; Package-Requires: ((emacs "26.1") (echo-bar "1.0.0") (indent-control "0.1.0") (show-eol "0.1.0") (keycast "1.2.0"))
1010
;; Keywords: faces echo-bar
1111

1212
;; This file is not part of GNU Emacs.
@@ -34,6 +34,7 @@
3434
(require 'echo-bar)
3535
(require 'indent-control)
3636
(require 'show-eol)
37+
(require 'keycast)
3738

3839
(defgroup jcs-echobar nil
3940
"An echo-bar for jcs-emacs."
@@ -42,15 +43,19 @@
4243
:link '(url-link :tag "Github" "https://github.com/jcs-emacs/jcs-echobar"))
4344

4445
(defcustom jcs-echobar-render
45-
`((:eval (jcs-echobar--render-spaces-tabs-size))
46+
`((:eval (jcs-echobar--render-keycast))
47+
(:eval (jcs-echobar--render-spaces-tabs-size))
4648
(:eval (jcs-echobar--render-coding-system))
4749
(:eval (jcs-echobar--render-eol))
4850
(:eval (jcs-echobar--render-time)))
4951
"List of item to render in echo-bar."
5052
:type 'list
5153
:group 'jcs-echobar)
5254

53-
(defvar jcs-echobar--render nil)
55+
(defcustom jcs-echobar-keycast-format "%K%C%R "
56+
"The keycast format spec."
57+
:type 'string
58+
:group 'jcs-echobar)
5459

5560
;;
5661
;; (@* "Externals" )
@@ -68,6 +73,10 @@
6873

6974
(defun jcs-echobar--enable ()
7075
"Enable function `jcs-echobar-mode'."
76+
(progn ; keycast
77+
(add-hook 'post-command-hook #'keycast--update t)
78+
(add-hook 'minibuffer-exit-hook #'keycast--minibuffer-exit t)
79+
(advice-add 'keycast--update :after #'jcs-echobar--keycast-update))
7180
(add-hook 'window-size-change-functions #'jcs-echobar--window-resize)
7281
(jcs-echobar--window-resize) ; call it manually once
7382
(setq jcs-echobar--default-function echo-bar-function)
@@ -76,6 +85,10 @@
7685

7786
(defun jcs-echobar--disable ()
7887
"Disable function `jcs-echobar-mode'."
88+
(progn ; keycast
89+
(remove-hook 'post-command-hook #'keycast--update)
90+
(remove-hook 'minibuffer-exit-hook #'keycast--minibuffer-exit)
91+
(advice-remove 'keycast--update #'jcs-echobar--keycast-update))
7992
(remove-hook 'window-size-change-functions #'jcs-echobar--window-resize)
8093
(setq echo-bar-function jcs-echobar--default-function)
8194
(echo-bar-mode -1))
@@ -116,6 +129,8 @@
116129
;; (@* "Core" )
117130
;;
118131

132+
(defvar jcs-echobar--render nil)
133+
119134
(defun jcs-echobar--window-resize (&rest _)
120135
"Window resize hook."
121136
(setq jcs-echobar--render nil) ; reset
@@ -133,6 +148,11 @@
133148
"Render the echo-bar."
134149
(mapconcat #'format-mode-line jcs-echobar--render ""))
135150

151+
(defun jcs-echobar--keycast-update (&rest _)
152+
"Exection after `keycast-update' function."
153+
(when (bound-and-true-p jcs-echobar-mode)
154+
(echo-bar-update)))
155+
136156
;;
137157
;; (@* "Plugins" )
138158
;;
@@ -155,5 +175,10 @@
155175
"Render time."
156176
(format-time-string "%b %d, %Y %H:%M:%S"))
157177

178+
(defun jcs-echobar--render-keycast ()
179+
"Render `keycast'."
180+
(when (featurep 'keycast)
181+
(keycast--format jcs-echobar-keycast-format)))
182+
158183
(provide 'jcs-echobar)
159184
;;; jcs-echobar.el ends here

0 commit comments

Comments
 (0)