Commit a0bba1ac044e
Changed files (2)
dots
config
emacs
site-lisp
dots/config/emacs/site-lisp/vde-toggle.el
@@ -0,0 +1,45 @@
+;;; vde-toggle.el --- Transient for toggling minor modes -*- lexical-binding: t; -*-
+
+;;; Commentary:
+;; A transient menu for quickly toggling buffer-local and global minor modes.
+
+;;; Code:
+
+(require 'transient)
+
+(defun vde-toggle--mode-status (mode)
+ "Return indicator string for MODE."
+ (if (and (boundp mode) (symbol-value mode)) "●" "○"))
+
+(transient-define-prefix vde-toggle-modes ()
+ "Toggle minor modes."
+ [["Visual / Display"
+ ("l" (lambda () (format "%s line numbers" (vde-toggle--mode-status 'display-line-numbers-mode)))
+ display-line-numbers-mode :transient t)
+ ("h" (lambda () (format "%s hl-line" (vde-toggle--mode-status 'global-hl-line-mode)))
+ global-hl-line-mode :transient t)
+ ("v" (lambda () (format "%s visual-line" (vde-toggle--mode-status 'visual-line-mode)))
+ visual-line-mode :transient t)
+ ("w" (lambda () (format "%s wrap-prefix" (vde-toggle--mode-status 'visual-wrap-prefix-mode)))
+ visual-wrap-prefix-mode :transient t)
+ ("W" (lambda () (format "%s whitespace" (vde-toggle--mode-status 'whitespace-mode)))
+ whitespace-mode :transient t)]
+ ["Code / Editing"
+ ("f" (lambda () (format "%s treesit-fold" (vde-toggle--mode-status 'treesit-fold-mode)))
+ treesit-fold-mode :transient t)
+ ("F" (lambda () (format "%s hideshow" (vde-toggle--mode-status 'hs-minor-mode)))
+ hs-minor-mode :transient t)
+ ("i" (lambda () (format "%s aggressive-indent" (vde-toggle--mode-status 'aggressive-indent-mode)))
+ aggressive-indent-mode :transient t)
+ ("e" (lambda () (format "%s electric-pair" (vde-toggle--mode-status 'electric-pair-mode)))
+ electric-pair-mode :transient t)
+ ("s" (lambda () (format "%s subword" (vde-toggle--mode-status 'subword-mode)))
+ subword-mode :transient t)]
+ ["Text"
+ ("S" (lambda () (format "%s flyspell" (vde-toggle--mode-status 'flyspell-mode)))
+ flyspell-mode :transient t)
+ ("a" (lambda () (format "%s auto-fill" (vde-toggle--mode-status 'auto-fill-function)))
+ auto-fill-mode :transient t)]])
+
+(provide 'vde-toggle)
+;;; vde-toggle.el ends here
dots/config/emacs/init.el
@@ -273,6 +273,9 @@ Otherwise, call `backward-kill-word'."
;; Add site-lisp to load-path for local elisp files
(add-to-list 'load-path (expand-file-name "site-lisp" user-emacs-directory))
+(use-package vde-toggle
+ :bind ("C-c t m" . vde-toggle-modes))
+
;; TODO: Re-enable init-func when needed for custom macros
;; (use-package init-func)
;; ;; TODO: do useful stuff with the macro instead