[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Detecting tree-sitter based major-modes for end-user customization a
From: |
Stefan Monnier |
Subject: |
Re: Detecting tree-sitter based major-modes for end-user customization and third party functions/packages |
Date: |
Tue, 20 Dec 2022 15:21:40 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
> Something like the code below:
>
> (defun my-auto-parent ()
> (interactive)
> (when (treesit-parser-list)
> (goto-char (treesit-node-start (treesit-node-parent (treesit-node-at
> (point)))))))
Even if Tree-sitter is available and there's a parser active in the
current buffer, `treesit-node-at` may return nil, so the better code is
probably something like
(defun my-auto-parent ()
(interactive)
(let ((node (treesit-node-at (point))))
(if node
(goto-char (treesit-node-start (treesit-node-parent node)))
<do something else>)))
and then lobby for `treesit-node-at` to return nil rather
than signal an error when there's no parser, tho an alternative is
(defun my-auto-parent ()
(interactive)
(condition-case nil
(let ((node (treesit-node-at (point))))
(if node
(goto-char (treesit-node-start (treesit-node-parent node)))
<do something else>))
(treesit-error
<do yet something else, or maybe not>)))
Stefan