Skip to content

Commit

Permalink
feat: Use built-in define-globalized-minor-mode
Browse files Browse the repository at this point in the history
  • Loading branch information
jcs090218 committed Jul 25, 2024
1 parent 7539dec commit b1d47b8
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 45 deletions.
42 changes: 14 additions & 28 deletions ts-fold-indicators.el
Original file line number Diff line number Diff line change
Expand Up @@ -119,15 +119,12 @@

(defun ts-fold-indicators--enable ()
"Enable `ts-fold-indicators' mode."
(if (or ts-fold-mode (ts-fold-mode 1)) ; Enable `ts-fold-mode' automatically
(progn
(add-hook 'tree-sitter-after-change-functions #'ts-fold-indicators--trigger-render nil t)
(add-hook 'after-save-hook #'ts-fold-indicators--trigger-render nil t)
(add-hook 'post-command-hook #'ts-fold-indicators--post-command nil t)
(add-hook 'window-size-change-functions #'ts-fold-indicators--size-change)
(add-hook 'window-scroll-functions #'ts-fold-indicators--scroll)
(ts-fold-indicators--render-buffer))
(ts-fold-indicators-mode -1)))
(add-hook 'tree-sitter-after-change-functions #'ts-fold-indicators--trigger-render nil t)
(add-hook 'after-save-hook #'ts-fold-indicators--trigger-render nil t)
(add-hook 'post-command-hook #'ts-fold-indicators--post-command nil t)
(add-hook 'window-size-change-functions #'ts-fold-indicators--size-change)
(add-hook 'window-scroll-functions #'ts-fold-indicators--scroll)
(ts-fold-indicators--render-buffer))

(defun ts-fold-indicators--disable ()
"Disable `ts-fold-indicators' mode."
Expand All @@ -150,25 +147,14 @@
#'ts-fold-indicators--disable))

;;;###autoload
(define-minor-mode global-ts-fold-indicators-mode
"Global minor mode for turning on ts-fold with indicators whenever avaliable."
:group 'ts-fold
:lighter nil
:init-value nil
:global t
(cond (global-ts-fold-indicators-mode
(add-hook 'ts-fold-mode-hook #'ts-fold-indicators-mode)
(global-ts-fold-mode 1) ; Must enabled!
(dolist (buf (buffer-list))
(with-current-buffer buf
(when (and ts-fold-mode (not ts-fold-indicators-mode))
(ts-fold-indicators-mode 1)))))
(t
(remove-hook 'ts-fold-mode-hook #'ts-fold-indicators-mode)
(dolist (buf (buffer-list))
(with-current-buffer buf
(when (and ts-fold-mode ts-fold-indicators-mode)
(ts-fold-indicators-mode -1)))))))
(define-globalized-minor-mode global-ts-fold-indicators-mode
ts-fold-indicators-mode ts-fold-indicators--trigger
:group 'ts-fold)

(defun ts-fold-indicators--trigger ()
"Enable `ts-fold-indicators-mode' when `ts-fold-mode' can be enabled."
(when (or ts-fold-mode (ts-fold-mode 1))
(ts-fold-indicators-mode 1)))

;;
;; (@* "Events" )
Expand Down
22 changes: 5 additions & 17 deletions ts-fold.el
Original file line number Diff line number Diff line change
Expand Up @@ -240,9 +240,8 @@ For example, Lua, Ruby, etc."
(defun ts-fold--tree-sitter-trigger ()
"Turn `ts-fold-mode' on and off alongside `tree-sitter-mode' when in a mode
ts-fold can act on."
(if (and tree-sitter-mode (ts-fold-usable-mode-p))
(ts-fold-mode 1)
(ts-fold-mode -1)))
(when (and tree-sitter-mode (ts-fold-usable-mode-p))
(ts-fold-mode 1)))

;;;###autoload
(define-minor-mode ts-fold-mode
Expand All @@ -255,20 +254,9 @@ ts-fold can act on."
#'ts-fold--disable))

;;;###autoload
(define-minor-mode global-ts-fold-mode
"Use `ts-fold-mode' wherever possible."
:group 'ts-fold
:init-value nil
:lighter nil
:global t
(if global-ts-fold-mode
(progn
(add-hook 'tree-sitter-mode-hook #'ts-fold--tree-sitter-trigger)
;; try to turn on in all buffers.
(dolist (buf (buffer-list))
(with-current-buffer buf
(ts-fold--tree-sitter-trigger))))
(remove-hook 'tree-sitter-mode-hook #'ts-fold--tree-sitter-trigger)))
(define-globalized-minor-mode global-ts-fold-mode
ts-fold-mode ts-fold--tree-sitter-trigger
:group 'treesit-fold)

(defun ts-fold-usable-mode-p (&optional mode)
"Return non-nil if `ts-fold' has defined folds for MODE."
Expand Down

0 comments on commit b1d47b8

Please sign in to comment.