diff options
| author | Yuan Fu | 2025-01-19 22:34:11 -0800 |
|---|---|---|
| committer | Yuan Fu | 2025-01-19 22:45:52 -0800 |
| commit | 458135155675a29a2c064998afc0cb416cd38b52 (patch) | |
| tree | e59907a39abfcae7d728fcd2fe85865a7c6b81be /src | |
| parent | 9093a0f824d709af15a29da528259dbca30f5c29 (diff) | |
| download | emacs-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.c | 11 |
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); |