branch: elpa/treesit-fold
commit e64e3b1368a49d3063d2d5cda02b38693b9e119e
Author: tpeacock19 <[email protected]>
Commit: GitHub <[email protected]>
Use built-in define-globalized-minor-mode (#12)
* Use built-in define-globalized-minor-mode
* clearer documentation
---
treesit-fold-indicators.el | 55 ++++++++++++++++++++--------------------------
treesit-fold.el | 42 +++++++++++++++++------------------
2 files changed, 44 insertions(+), 53 deletions(-)
diff --git a/treesit-fold-indicators.el b/treesit-fold-indicators.el
index b51cffa90e..fdf7feea61 100644
--- a/treesit-fold-indicators.el
+++ b/treesit-fold-indicators.el
@@ -117,15 +117,12 @@
(defun treesit-fold-indicators--enable ()
"Enable `treesit-fold-indicators' mode."
- (if (or treesit-fold-mode (treesit-fold-mode 1)) ; Enable
`treesit-fold-mode' automatically
- (progn
- (add-hook 'after-change-functions
#'treesit-fold-indicators--trigger-render nil t)
- (add-hook 'after-save-hook #'treesit-fold-indicators--trigger-render
nil t)
- (add-hook 'post-command-hook #'treesit-fold-indicators--post-command
nil t)
- (add-hook 'window-size-change-functions
#'treesit-fold-indicators--size-change)
- (add-hook 'window-scroll-functions #'treesit-fold-indicators--scroll)
- (treesit-fold-indicators--render-buffer))
- (treesit-fold-indicators-mode -1)))
+ (add-hook 'after-change-functions #'treesit-fold-indicators--trigger-render
nil t)
+ (add-hook 'after-save-hook #'treesit-fold-indicators--trigger-render nil t)
+ (add-hook 'post-command-hook #'treesit-fold-indicators--post-command nil t)
+ (add-hook 'window-size-change-functions
#'treesit-fold-indicators--size-change)
+ (add-hook 'window-scroll-functions #'treesit-fold-indicators--scroll)
+ (treesit-fold-indicators--render-buffer))
(defun treesit-fold-indicators--disable ()
"Disable `treesit-fold-indicators' mode."
@@ -143,31 +140,27 @@
:lighter nil
:keymap treesit-fold-indicators-mode-map
:init-value nil
- (if treesit-fold-indicators-mode
- (treesit-fold-indicators--enable)
- (treesit-fold-indicators--disable)))
+ (cond
+ ((not (and (or treesit-fold-mode (treesit-fold-mode 1))
+ treesit-fold-indicators-mode))
+ (when treesit-fold-indicators-mode
+ (treesit-fold-indicators-mode -1)))
+ (treesit-fold-indicators-mode
+ (treesit-fold-indicators--enable) t)
+ (t
+ (treesit-fold-indicators--disable))))
;;;###autoload
-(define-minor-mode global-treesit-fold-indicators-mode
- "Toggle treesit-fold-indicatos in all buffers avaliable."
- :group 'treesit-fold
- :lighter nil
- :init-value nil
- :global t
- (cond (global-treesit-fold-indicators-mode
- (add-hook 'treesit-fold-mode-hook #'treesit-fold-indicators-mode)
- (global-treesit-fold-mode 1) ; Must enabled!
- (dolist (buf (buffer-list))
- (with-current-buffer buf
- (when (and treesit-fold-mode (not treesit-fold-indicators-mode))
- (treesit-fold-indicators-mode 1)))))
- (t
- (remove-hook 'treesit-fold-mode-hook #'treesit-fold-indicators-mode)
- (dolist (buf (buffer-list))
- (with-current-buffer buf
- (when (and treesit-fold-mode treesit-fold-indicators-mode)
- (treesit-fold-indicators-mode -1)))))))
+(define-globalized-minor-mode global-treesit-fold-indicators-mode
+ treesit-fold-indicators-mode treesit-fold-indicators--trigger
+ :group 'treesit-fold)
+(defun treesit-fold-indicators--trigger ()
+ "Enable `treesit-fold-indicators-mode' when `treesit-fold-mode' can
+be enabled."
+ (when (or treesit-fold-mode
+ (treesit-fold-mode 1))
+ (treesit-fold-indicators-mode 1)))
;;
;; (@* "Events" )
;;
diff --git a/treesit-fold.el b/treesit-fold.el
index e03fb5fd42..2b1df22d42 100644
--- a/treesit-fold.el
+++ b/treesit-fold.el
@@ -252,6 +252,8 @@ For example, Lua, Ruby, etc."
"Modes in which `treesit-fold-mode' gets enabled."
:type '(repeat symbol))
+(defvar-keymap treesit-fold-mode-map
+ :doc "Keymap used when `treesit-fold-mode' is active.")
;;
;; (@* "Externals" )
;;
@@ -291,11 +293,10 @@ For example, Lua, Ruby, etc."
(treesit-parser-list))
(defun treesit-fold--trigger ()
- "Toggle `treesit-fold-mode' when the current mode is treesit-fold
compatible."
- (when (treesit-fold-ready-p)
- (if (treesit-fold-usable-mode-p)
- (treesit-fold-mode 1)
- (treesit-fold-mode -1))))
+ "Enable `treesit-fold-mode' when the current mode is treesit-fold
compatible."
+ (when (and (treesit-fold-ready-p)
+ (treesit-fold-usable-mode-p))
+ (treesit-fold-mode 1)))
;;;###autoload
(define-minor-mode treesit-fold-mode
@@ -303,25 +304,22 @@ For example, Lua, Ruby, etc."
:group 'treesit-fold
:init-value nil
:lighter "Treesit-Fold"
- (if treesit-fold-mode (treesit-fold--enable) (treesit-fold--disable)))
+ :keymap treesit-fold-mode-map
+ (cond
+ ((not (and (treesit-available-p)
+ (treesit-parser-list)
+ (treesit-fold-usable-mode-p)))
+ (when treesit-fold-mode
+ (treesit-fold-mode -1)))
+ (treesit-fold-mode
+ (treesit-fold--enable) t)
+ (t
+ (treesit-fold--disable))))
;;;###autoload
-(define-minor-mode global-treesit-fold-mode
- "Use `treesit-fold-mode' wherever possible."
- :group 'treesit-fold
- :init-value nil
- :lighter nil
- :global t
- (if global-treesit-fold-mode
- (progn
- (dolist (hook (mapcar (lambda (m) (intern (format "%s-hook" m)))
treesit-fold-modes))
- (add-hook hook #'treesit-fold--trigger))
- ;; try to turn on in all buffers.
- (dolist (buf (buffer-list))
- (with-current-buffer buf
- (treesit-fold--trigger))))
- (dolist (hook (mapcar (lambda (m) (intern (format "%s-hook" m)))
treesit-fold-modes))
- (remove-hook hook #'treesit-fold--trigger))))
+(define-globalized-minor-mode global-treesit-fold-mode
+ treesit-fold-mode treesit-fold--trigger
+ :group 'treesit-fold)
(defun treesit-fold-usable-mode-p (&optional mode)
"Return non-nil if `treesit-fold' has defined folds for MODE."