Skip to content

Commit 7897096

Browse files
committed
Add a keymap in the close overlay
This map allows to bind a keybind to the closed overlay to open it with a key when inside it without having to bind a key to `ts-fold-open` that would need to be global
1 parent f0804a2 commit 7897096

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

ts-fold.el

+13
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,22 @@ the fold in a cons cell. See `ts-fold-range-python' for an example."
167167
(let ((tree-sitter-mode t))
168168
(ts-fold-open-all)))
169169

170+
(defvar ts-fold-close-keymap-default
171+
(let ((map (make-sparse-keymap)))
172+
(define-key map (kbd "TAB") 'ts-fold-open)
173+
map))
174+
175+
(defvar ts-fold-close-keymap 'ts-fold-close-keymap-default
176+
"Keymap used within ts-fold-close overlay.
177+
It should be set before the overlay is created.")
178+
179+
(make-local-variable 'ts-fold-close-keymap)
180+
170181
;;;###autoload
171182
(define-minor-mode ts-fold-mode
172183
"Folding code using tree sitter."
173184
:init-value nil
185+
:keymap ts-fold-close-keymap
174186
:lighter "TS-Fold"
175187
(if ts-fold-mode (ts-fold--enable) (ts-fold--disable)))
176188

@@ -218,6 +230,7 @@ This function is borrowed from `tree-sitter-node-at-point'."
218230
(let* ((beg (car range)) (end (cdr range)) (ov (make-overlay beg end)))
219231
(overlay-put ov 'creator 'ts-fold)
220232
(overlay-put ov 'invisible 'ts-fold)
233+
(overlay-put ov 'keymap ts-fold-close-keymap-default)
221234
(overlay-put ov 'display (or (and ts-fold-summary-show
222235
(ts-fold-summary--get (buffer-substring beg end)))
223236
ts-fold-replacement))

0 commit comments

Comments
 (0)