aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYuan Fu2025-01-19 22:34:11 -0800
committerYuan Fu2025-01-19 22:45:52 -0800
commit458135155675a29a2c064998afc0cb416cd38b52 (patch)
treee59907a39abfcae7d728fcd2fe85865a7c6b81be /src
parent9093a0f824d709af15a29da528259dbca30f5c29 (diff)
downloademacs-458135155675a29a2c064998afc0cb416cd38b52.tar.gz
emacs-458135155675a29a2c064998afc0cb416cd38b52.zip
Make treesit-language-remap-alist completely transparent (bug#72388)
* doc/lispref/parsing.texi (Using Parser): Update manual. * src/treesit.c (Ftreesit_parser_create): Use the LANGUAGE argument given as the language for the parser, not the actual language.
Diffstat (limited to 'src')
-rw-r--r--src/treesit.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/treesit.c b/src/treesit.c
index 2f06de67ad8..f179e4561cf 100644
--- a/src/treesit.c
+++ b/src/treesit.c
@@ -1657,8 +1657,8 @@ an indirect buffer. */)
1657 1657
1658 treesit_check_buffer_size (buf); 1658 treesit_check_buffer_size (buf);
1659 1659
1660 language = resolve_language_symbol (language); 1660 Lisp_Object remapped_lang = resolve_language_symbol (language);
1661 CHECK_SYMBOL (language); 1661 CHECK_SYMBOL (remapped_lang);
1662 1662
1663 /* See if we can reuse a parser. */ 1663 /* See if we can reuse a parser. */
1664 if (NILP (no_reuse)) 1664 if (NILP (no_reuse))
@@ -1679,7 +1679,7 @@ an indirect buffer. */)
1679 Lisp_Object signal_data = Qnil; 1679 Lisp_Object signal_data = Qnil;
1680 TSParser *parser = ts_parser_new (); 1680 TSParser *parser = ts_parser_new ();
1681 struct treesit_loaded_lang loaded_lang 1681 struct treesit_loaded_lang loaded_lang
1682 = treesit_load_language (language, &signal_symbol, &signal_data); 1682 = treesit_load_language (remapped_lang, &signal_symbol, &signal_data);
1683 TSLanguage *lang = loaded_lang.lang; 1683 TSLanguage *lang = loaded_lang.lang;
1684 if (lang == NULL) 1684 if (lang == NULL)
1685 xsignal (signal_symbol, signal_data); 1685 xsignal (signal_symbol, signal_data);
@@ -1687,7 +1687,10 @@ an indirect buffer. */)
1687 always succeed. */ 1687 always succeed. */
1688 ts_parser_set_language (parser, lang); 1688 ts_parser_set_language (parser, lang);
1689 1689
1690 /* Create parser. */ 1690 /* Create parser. Use the unmapped LANGUAGE symbol, so the nodes
1691 created by this parser (and this parser) self identify as the
1692 unmapped language. This makes the grammar mapping completely
1693 transparent. */
1691 Lisp_Object lisp_parser = make_treesit_parser (buf_orig, 1694 Lisp_Object lisp_parser = make_treesit_parser (buf_orig,
1692 parser, NULL, 1695 parser, NULL,
1693 language, tag); 1696 language, tag);