Fix treesit-parser-create behavior regarding indirect buffers
The previous fix fixed the problem that treesit-parser-create always use the current buffer, but that introduce another subtle problem: if an indirect buffer creates a parser, the parser saves the base buffer rather than the indirect buffer. In Emacs 29, if you create a parser in an indirect buffer, the parser saves the indirect buffer. This change of behavior breaks some existing use-cases for people using indirect buffer with tree-sitter. In Emacs 31, indirect buffers and base buffer get their own parser list, so this problem doesn't exist anymore. The fix is only for Emacs 30. * src/treesit.c (Ftreesit_parser_create): Use the buffer that's given to treesit-parser-create, even if it's an indirect buffer.
This commit is contained in:
parent
20ac26e675
commit
defc55bb6f
1 changed files with 4 additions and 1 deletions
|
@ -1560,6 +1560,9 @@ an indirect buffer. */)
|
|||
CHECK_BUFFER (buffer);
|
||||
buf = XBUFFER (buffer);
|
||||
}
|
||||
|
||||
struct buffer *buffer_given = buf;
|
||||
|
||||
if (buf->base_buffer)
|
||||
buf = buf->base_buffer;
|
||||
|
||||
|
@ -1595,7 +1598,7 @@ an indirect buffer. */)
|
|||
|
||||
/* Create parser. */
|
||||
Lisp_Object lisp_buf;
|
||||
XSETBUFFER (lisp_buf, buf);
|
||||
XSETBUFFER (lisp_buf, buffer_given);
|
||||
Lisp_Object lisp_parser = make_treesit_parser (lisp_buf,
|
||||
parser, NULL,
|
||||
language, tag);
|
||||
|
|
Loading…
Add table
Reference in a new issue