diff options
Diffstat (limited to 'lisp/+nyan-mode.el')
-rw-r--r-- | lisp/+nyan-mode.el | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lisp/+nyan-mode.el b/lisp/+nyan-mode.el new file mode 100644 index 0000000..fc6775b --- /dev/null +++ b/lisp/+nyan-mode.el | |||
@@ -0,0 +1,39 @@ | |||
1 | ;;; +nyan-mode.el --- Extras for nyan-mode -*- lexical-binding: t; -*- | ||
2 | |||
3 | ;;; Commentary: | ||
4 | |||
5 | ;;; Code: | ||
6 | |||
7 | ;;; Update even without line number in the mode line. | ||
8 | |||
9 | (defcustom +nyan-mode-update-functions | ||
10 | '( end-of-buffer beginning-of-buffer | ||
11 | next-line previous-line | ||
12 | org-next-visible-heading org-previous-visible-heading) | ||
13 | "Functions after which to force a mode-line update." | ||
14 | :type '(repeat function)) | ||
15 | |||
16 | (defun +nyan-mode--fmlu (&rest _) | ||
17 | "Update the mode-line, advice-style." | ||
18 | (force-mode-line-update)) | ||
19 | |||
20 | (defun +nyan-mode-advice (&rest _) | ||
21 | "Advise line-moving functions when in `nyan-mode'." | ||
22 | (dolist (fn +nyan-mode-update-functions) | ||
23 | (if nyan-mode | ||
24 | (advice-add fn :after #'+nyan-mode--fmlu) | ||
25 | (advice-remove fn #'+nyan-mode--fmlu)))) | ||
26 | |||
27 | (define-minor-mode +nyan-local-mode | ||
28 | "My very own `nyan-mode' that isn't global and doesn't update the mode-line." | ||
29 | :global nil | ||
30 | :group 'nyan | ||
31 | (dolist (fn +nyan-mode-update-functions) | ||
32 | (if +nyan-local-mode | ||
33 | (advice-add fn :after #'+nyan-mode--fmlu) | ||
34 | (advice-remove fn #'+nyan-mode--fmlu)))) | ||
35 | |||
36 | (define-globalized-minor-mode +nyan-mode +nyan-local-mode +nyan-local-mode) | ||
37 | |||
38 | (provide '+nyan-mode) | ||
39 | ;;; +nyan-mode.el ends here | ||