diff --git a/lisp/init-typescript.el b/lisp/init-typescript.el index 2697b16..c2edbeb 100644 --- a/lisp/init-typescript.el +++ b/lisp/init-typescript.el @@ -28,4 +28,30 @@ (add-to-list 'tree-sitter-major-mode-language-alist '(typescript-tsx-mode . tsx)))) +(defun creature/treesit-convert-to-template () + "Conver the string at point to a template string by treesit." + (interactive) + (when (and (treesit-available-p) (treesit-language-at (point))) + (let* ((node (treesit-node-at (point))) + (node-type (treesit-node-type node)) + (start nil) + (end nil)) + (when (string= node-type "string_fragment") + (setq start (treesit-node-start node) + end (treesit-node-end node)) + (save-restriction + (save-excursion + (goto-char start) + (backward-delete-char 1) + (insert "`") + (goto-char end) + (delete-char 1) + (insert "`"))))))) + +(with-eval-after-load 'js + (define-key js-ts-mode-map (kbd "C-c '") #'creature/treesit-convert-to-template)) +(with-eval-after-load 'typescript-ts-mode + (define-key typescript-ts-base-mode-map (kbd "C-c '") #'creature/treesit-convert-to-template)) + + (provide 'init-typescript)