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