|
From: | Daniel Colascione |
Subject: | Re: cc-mode fontification feels random |
Date: | Fri, 4 Jun 2021 11:36:05 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 |
On 6/4/21 11:25 AM, Stefan Monnier wrote:
But I don't understand what's stopping these tree-sitter C modules (like [1] and [2]) to have access to the buffer's contents directly and have the best of both worlds.I think it's a direct result of them being "modules": the API doesn't let modules access a buffer's content directly, so it's more efficient copy the content via `buffer-substring` and toss it on the other side than having to use something like `char-after`.
The problem is more fundamental than that. Internally, each buffer has a gap. External tools that operate on char arrays don't expect a gap. (They also don't expect to operate on Emacs internal coding, but that's another issue.) If we *did* grant direct buffer access via modules, we'd at least have to memcpy half (on average) the buffer to close the gap, then memcpy half the buffer (on average) to open the gap again when we began editing. If we're going to copy anyway, let's just copy via the buffer-substring interface. There's no reason that it has to be particularly inefficient.
Besides, memory copies are really, really, ridiculously fast. My system can cat from /dev/zero to /dev/null at ~18GB/sec. Copying a buffer's contents so we can give it to tree-sitter should be no issue at all.
[Prev in Thread] | Current Thread | [Next in Thread] |