From: Stephen Leake <stephen_leake@stephe-leake.org>
To: emacs-devel <emacs-devel@gnu.org>
Subject: Re: emacs-tree-sitter and Emacs
Date: Tue, 31 Mar 2020 16:27:35 -0800 [thread overview]
Message-ID: <86369ojbig.fsf@stephe-leake.org> (raw)
In-Reply-To: <83eeta3sa0.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 30 Mar 2020 16:07:35 +0300")
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Jorge Javier Araya Navarro <jorge@esavara.cr>
>> Date: Sun, 29 Mar 2020 21:23:49 -0600
>>
>> I have gone through th0rex's pull request[2] and nothing suggests
>> that hooks are being used in order to do
>> the fontification of buffers, the only hook we have is
>> `tree-sitter--after-change', it does re-parsing and keeps
>> the tree updated
>
> Can you explain why an after-change hook is at all needed? Why not
> pass to tree-sitter the chunk that jit-lock is going to fontify?
> AFAIU, tree-sitter is well suited for parsing incomplete source
> chunks.
It depends on what you mean by "incomplete". If the full buffer is
syntactically correct, and the "incomplete" source is a region chosen by
font-lock, then yes; tree-sitter can efficiently update the parse tree
to match that region.
On the other hand, if the buffer is not syntactically correct, there is
no guarrantee that tree-sitter can handle it; it's supposed to be
"robust" to syntax errors. One of the links to an error recovery
algorithm is broken; the other link describes an algorithm that is not
as sophisticated as the one wisi uses (I'm working on writing a paper
about that).
> OTOH, using an after-change hook has its downsides, even if disregard
> slow-down (which I wouldn't).
In wisi (used by ada-mode), the after-change hooks just record what
regions have been changed; font-lock then triggers a parse if the region
being fontified contains or is after a change region. Navigation and
indent also trigger parses.
By default font-lock runs after every character typed, which is often
too slow in an ada-mode buffer; I always set jit-lock-defer-time to
1.0 seconds.
--
-- Stephe
next prev parent reply other threads:[~2020-04-01 0:27 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-30 3:23 emacs-tree-sitter and Emacs Jorge Javier Araya Navarro
2020-03-30 13:07 ` Eli Zaretskii
2020-03-30 14:00 ` Stefan Monnier
2020-04-01 0:08 ` Stephen Leake
2020-04-01 0:27 ` Stephen Leake [this message]
2020-04-01 13:20 ` Eli Zaretskii
2020-04-01 19:51 ` Stephen Leake
2020-04-02 14:03 ` Eli Zaretskii
2020-04-02 14:27 ` Michael Welsh Duggan
2020-04-02 15:15 ` Eli Zaretskii
2020-04-02 15:24 ` Michael Welsh Duggan
2020-04-02 16:10 ` Eli Zaretskii
2020-04-02 16:19 ` Michael Welsh Duggan
2020-04-02 17:18 ` Yuan Fu
2020-04-02 17:39 ` Stefan Monnier
2020-04-02 18:17 ` Yuan Fu
2020-04-02 18:26 ` Stefan Monnier
2020-04-03 2:16 ` Stephen Leake
2020-04-02 18:29 ` Eli Zaretskii
2020-04-02 18:27 ` Eli Zaretskii
2020-04-02 18:50 ` Michael Welsh Duggan
2020-04-02 19:03 ` Eli Zaretskii
2020-04-02 19:39 ` 조성빈
2020-04-03 6:37 ` Eli Zaretskii
2020-04-03 17:27 ` Stephen Leake
2020-04-02 19:48 ` Stefan Monnier
2020-04-03 2:06 ` Stephen Leake
2020-04-03 7:33 ` Eli Zaretskii
2020-04-03 17:24 ` Stephen Leake
2020-04-03 18:39 ` Eli Zaretskii
2020-04-02 15:33 ` martin rudalics
2020-04-03 1:55 ` Stephen Leake
2020-04-03 4:47 ` Jorge Javier Araya Navarro
2020-04-03 7:32 ` Eli Zaretskii
2020-04-03 17:05 ` Stephen Leake
2020-04-03 18:19 ` Eli Zaretskii
2020-04-04 0:00 ` Stephen Leake
2020-04-01 13:28 ` Stefan Monnier
2020-03-30 14:11 ` Stefan Monnier
2020-03-30 17:00 ` Jorge Javier Araya Navarro
2020-03-30 17:07 ` Dmitry Gutov
2020-03-30 17:09 ` Jorge Javier Araya Navarro
2020-03-30 17:22 ` Stefan Monnier
2020-03-30 17:34 ` Jorge Javier Araya Navarro
2020-03-30 17:50 ` Stefan Monnier
2020-04-01 0:30 ` Stephen Leake
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86369ojbig.fsf@stephe-leake.org \
--to=stephen_leake@stephe-leake.org \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).