aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYuan Fu2025-03-10 20:15:39 -0700
committerYuan Fu2025-03-11 01:06:39 -0700
commit03a6d4256f861d71e09206ac09d48f16efd52b64 (patch)
tree12f2fb21cf44ce08f9b24202b8acbe1a28050a4b /src
parentf79354460d3bef4a3f859f78c6cc77738437d670 (diff)
downloademacs-03a6d4256f861d71e09206ac09d48f16efd52b64.tar.gz
emacs-03a6d4256f861d71e09206ac09d48f16efd52b64.zip
Remove parent-node field from tree-sitter parsers
* src/treesit.c (make_treesit_parser): Remove field. (Ftreesit_parser_parent_node): (Ftreesit_parser_set_parent_node): Remove * src/treesit.h (Lisp_TS_Parser): Remove field.
Diffstat (limited to 'src')
-rw-r--r--src/treesit.c32
-rw-r--r--src/treesit.h14
2 files changed, 0 insertions, 46 deletions
diff --git a/src/treesit.c b/src/treesit.c
index 9622addd09b..b0979397d35 100644
--- a/src/treesit.c
+++ b/src/treesit.c
@@ -1368,7 +1368,6 @@ make_treesit_parser (Lisp_Object buffer, TSParser *parser,
1368 lisp_parser->tag = tag; 1368 lisp_parser->tag = tag;
1369 lisp_parser->last_set_ranges = Qnil; 1369 lisp_parser->last_set_ranges = Qnil;
1370 lisp_parser->embed_level = Qnil; 1370 lisp_parser->embed_level = Qnil;
1371 lisp_parser->parent_node = Qnil;
1372 lisp_parser->buffer = buffer; 1371 lisp_parser->buffer = buffer;
1373 lisp_parser->parser = parser; 1372 lisp_parser->parser = parser;
1374 lisp_parser->tree = tree; 1373 lisp_parser->tree = tree;
@@ -1856,35 +1855,6 @@ tree; otherwise it must be a non-negative integer. */)
1856 return level; 1855 return level;
1857} 1856}
1858 1857
1859DEFUN ("treesit-parser-parent-node",
1860 Ftreesit_parser_parent_node, Streesit_parser_parent_node,
1861 1, 1, 0,
1862 doc: /* Return PARSER's parent node, if one exists.
1863
1864Only embeded local parsers can have parent node. When Emacs uses a node
1865in the host parser to create this local parser, that node is considered
1866the parent node of the local parser. */)
1867 (Lisp_Object parser)
1868{
1869 treesit_check_parser (parser);
1870 return XTS_PARSER (parser)->parent_node;
1871}
1872
1873DEFUN ("treesit-parser-set-parent-node",
1874 Ftreesit_parser_set_parent_node, Streesit_parser_set_parent_node,
1875 2, 2, 0,
1876 doc: /* Make NODE be the parent node of PARSER. */)
1877 (Lisp_Object parser, Lisp_Object node)
1878{
1879 treesit_check_parser (parser);
1880 if (!NILP (node))
1881 CHECK_TS_NODE (node);
1882
1883 XTS_PARSER (parser)->parent_node = node;
1884 return node;
1885}
1886
1887
1888/* Return true if PARSER is not deleted and its buffer is live. */ 1858/* Return true if PARSER is not deleted and its buffer is live. */
1889static bool 1859static bool
1890treesit_parser_live_p (Lisp_Object parser) 1860treesit_parser_live_p (Lisp_Object parser)
@@ -4642,8 +4612,6 @@ applies to LANGUAGE-A will be redirected to LANGUAGE-B instead. */);
4642 defsubr (&Streesit_parser_tag); 4612 defsubr (&Streesit_parser_tag);
4643 defsubr (&Streesit_parser_embed_level); 4613 defsubr (&Streesit_parser_embed_level);
4644 defsubr (&Streesit_parser_set_embed_level); 4614 defsubr (&Streesit_parser_set_embed_level);
4645 defsubr (&Streesit_parser_parent_node);
4646 defsubr (&Streesit_parser_set_parent_node);
4647 4615
4648 defsubr (&Streesit_parser_root_node); 4616 defsubr (&Streesit_parser_root_node);
4649 defsubr (&Streesit_parse_string); 4617 defsubr (&Streesit_parse_string);
diff --git a/src/treesit.h b/src/treesit.h
index d4cfc47ee5d..0d4635f4253 100644
--- a/src/treesit.h
+++ b/src/treesit.h
@@ -72,20 +72,6 @@ struct Lisp_TS_Parser
72 friends) haven't touched this parser yet, and this parser isn't 72 friends) haven't touched this parser yet, and this parser isn't
73 part of the embed parser tree. */ 73 part of the embed parser tree. */
74 Lisp_Object embed_level; 74 Lisp_Object embed_level;
75 /* Some comments: Technically you could calculate embed_level by
76 following parent_node, but parent_node might be outdated so it's a
77 good idea to record embed_level separately. Embed_level and
78 parent_node could have been implemented as "parser properties" with
79 an obarray, but ultimately I think two explicit fields helps
80 documentation better and it's not clear to me that a property list
81 for a parser will be useful beyond this. And we can always convert
82 these to properties later, but not vice versa. */
83 /* When an embedded parser is created, it's usually based on a node in
84 the host parser. This field saves that node so it's possible to
85 climb up and out of the embedded parser into the host parser. Note
86 that the range of the embedded parser doesn't have to match that of
87 the parent node. */
88 Lisp_Object parent_node;
89 /* The buffer associated with this parser. */ 75 /* The buffer associated with this parser. */
90 Lisp_Object buffer; 76 Lisp_Object buffer;
91 /* The pointer to the tree-sitter parser. Never NULL. */ 77 /* The pointer to the tree-sitter parser. Never NULL. */