main
1;;; vde-toggle.el --- Transient for toggling minor modes -*- lexical-binding: t; -*-
2
3;;; Commentary:
4;; A transient menu for quickly toggling buffer-local and global minor modes.
5
6;;; Code:
7
8(require 'transient)
9
10(defun vde-toggle--mode-status (mode)
11 "Return indicator string for MODE."
12 (if (and (boundp mode) (symbol-value mode)) "●" "○"))
13
14(transient-define-prefix vde-toggle-modes ()
15 "Toggle minor modes."
16 [["Visual / Display"
17 ("l" (lambda () (format "%s line numbers" (vde-toggle--mode-status 'display-line-numbers-mode)))
18 display-line-numbers-mode :transient t)
19 ("h" (lambda () (format "%s hl-line" (vde-toggle--mode-status 'global-hl-line-mode)))
20 global-hl-line-mode :transient t)
21 ("v" (lambda () (format "%s visual-line" (vde-toggle--mode-status 'visual-line-mode)))
22 visual-line-mode :transient t)
23 ("w" (lambda () (format "%s wrap-prefix" (vde-toggle--mode-status 'visual-wrap-prefix-mode)))
24 visual-wrap-prefix-mode :transient t)
25 ("W" (lambda () (format "%s whitespace" (vde-toggle--mode-status 'whitespace-mode)))
26 whitespace-mode :transient t)]
27 ["Code / Editing"
28 ("f" (lambda () (format "%s treesit-fold" (vde-toggle--mode-status 'treesit-fold-mode)))
29 treesit-fold-mode :transient t)
30 ("F" (lambda () (format "%s hideshow" (vde-toggle--mode-status 'hs-minor-mode)))
31 hs-minor-mode :transient t)
32 ("i" (lambda () (format "%s aggressive-indent" (vde-toggle--mode-status 'aggressive-indent-mode)))
33 aggressive-indent-mode :transient t)
34 ("e" (lambda () (format "%s electric-pair" (vde-toggle--mode-status 'electric-pair-mode)))
35 electric-pair-mode :transient t)
36 ("s" (lambda () (format "%s subword" (vde-toggle--mode-status 'subword-mode)))
37 subword-mode :transient t)]
38 ["Text"
39 ("S" (lambda () (format "%s flyspell" (vde-toggle--mode-status 'flyspell-mode)))
40 flyspell-mode :transient t)
41 ("a" (lambda () (format "%s auto-fill" (vde-toggle--mode-status 'auto-fill-function)))
42 auto-fill-mode :transient t)]])
43
44(provide 'vde-toggle)
45;;; vde-toggle.el ends here