[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to add pseudo vector types
From: |
Clément Pit-Claudel |
Subject: |
Re: How to add pseudo vector types |
Date: |
Fri, 16 Jul 2021 22:23:26 -0400 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 |
On 7/16/21 10:05 PM, Yuan Fu wrote:
> My conclusion is that after-change-hook is pretty insignificant, and the
> initial parse is a bit slow (on large files).
I have no idea if it makes sense, but: does the initial parse need to be
synchronous, or could you instead run the parsing in one thread, and the rest
of Emacs in another? (I'm talking about concurrent execution, not cooperative
threading).
In most cases there should be very limited contention, if at at all: in large
buffers most of Emacs' activity will be focused on the (relatively few)
characters around the gap, and most of the parser's activity will be reading
from the buffer at other positions. You do need to be careful to not read the
garbage data from the gap, but otherwise seeing stale or even inconsistent data
from the parser thread shouldn't be an issue, since tree-sitter is supposed to
be robust to bad parses.
In fact, depending on how robust tree-sitter is, you might even be able to do
the concurrency-control optimistically (parse everything up to close to the
gap, check that the gap hasn't moved into the region that you read, and then
resume reading or rollback).
Alternatively, maybe you could even do a full parse with minimal concurrency
control: you'd make sure that the Emacs thread records not just changes to the
buffer text but also movements of the gap, and then you could use that list of
changes for the next parse?
Anyway, thanks for working on this!
- Re: How to add pseudo vector types, (continued)
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/15
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/15
- Re: How to add pseudo vector types, Yuan Fu, 2021/07/15
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/16
- Re: How to add pseudo vector types, Yuan Fu, 2021/07/16
- Re: How to add pseudo vector types, Stefan Monnier, 2021/07/16
- Re: How to add pseudo vector types, Yuan Fu, 2021/07/16
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/16
- Re: How to add pseudo vector types, Yuan Fu, 2021/07/16
- Re: How to add pseudo vector types, Yuan Fu, 2021/07/16
- Re: How to add pseudo vector types,
Clément Pit-Claudel <=
- Re: How to add pseudo vector types, Yuan Fu, 2021/07/16
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/17
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/17
- Re: How to add pseudo vector types, Clément Pit-Claudel, 2021/07/20
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/21
- Re: How to add pseudo vector types, Clément Pit-Claudel, 2021/07/21
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/21
- Re: How to add pseudo vector types, Clément Pit-Claudel, 2021/07/22
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/22
- Re: How to add pseudo vector types, Stephen Leake, 2021/07/21