Open shiyuangu opened 2 years ago
I don't use folding much in JSX, but I do use fold-this
in other modes. Here's a quick-and-dirty folding function you can try:
(defun rjsx-fold-tag-at-point ()
(interactive)
(js2-mode-wait-for-parse
(lambda ()
(let* ((node (rjsx--tag-at-point))
(child0 (car (rjsx-node-kids node)))
(closer (and node (rjsx-node-closing-tag node))))
(cond
((null node) (message "No JSX tag found at point"))
((null closer) (message "JSX tag is void"))
((null child0) (message "JSX tag has no children"))
(t (let* ((start (js2-node-abs-pos child0))
(end (js2-node-abs-pos closer)))
(fold-this start end))))))))
It doesn't handle newlines, but should be enough to get you started!
As usual, PRs welcome for anyone wanting to add to rjsx core
What is the recommended way to fold jsx tags using rjsx-mode? I tried hide-show minor mode and origami but they all messed up the tags. Thank you!