[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#64017: Wrong conversion from Emacs to Tree-sitter S-expression synta
From: |
Mattias Engdegård |
Subject: |
bug#64017: Wrong conversion from Emacs to Tree-sitter S-expression syntax |
Date: |
Mon, 12 Jun 2023 16:14:01 +0200 |
`treesit-pattern-expand` converts a query pattern into tree-sitter S-expression
syntax, as a string. The conversion mainly converts certain keywords but the
main problem is that it prints strings in Emacs syntax which differs from that
of tree-sitter.
As a consequence, :match regexps cannot contain newlines:
(treesit-query-capture
'java
'(((identifier) @font-lock-constant-face
(:match "hello\n" @font-lock-constant-face))))
signals a syntax error.
As far as I can tell the tree-sitter string syntax allows for the escape
sequences:
\n = LF
\r = CR
\t = TAB
\0 = NUL (only a single 0 -- no octal escapes!)
\X = the character X itself
Unescape newlines result in a syntax error as seen in the example above. NULs
don't seem to go well either.
At the very least, the conversion should avoid literal newlines and NULs in the
result (and probably CR and TAB). This cannot be done with a straight
prin1-to-string.
(By the way, why is the conversion written in C? Was Lisp too slow?)
Ideally we should not need to expose the tree-sitter s-exp query syntax at all.
Surely Emacs s-exps should be preferable in every case?
- bug#64017: Wrong conversion from Emacs to Tree-sitter S-expression syntax,
Mattias Engdegård <=
- bug#64017: Wrong conversion from Emacs to Tree-sitter S-expression syntax, Yuan Fu, 2023/06/15
- bug#64017: Wrong conversion from Emacs to Tree-sitter S-expression syntax, Mattias Engdegård, 2023/06/16
- bug#64017: Wrong conversion from Emacs to Tree-sitter S-expression syntax, Mattias Engdegård, 2023/06/16
- bug#64017: Wrong conversion from Emacs to Tree-sitter S-expression syntax, Basil Contovounesios, 2023/06/16
- bug#64017: Wrong conversion from Emacs to Tree-sitter S-expression syntax, Mattias Engdegård, 2023/06/17
- bug#64017: Wrong conversion from Emacs to Tree-sitter S-expression syntax, Eli Zaretskii, 2023/06/17
- bug#64017: Wrong conversion from Emacs to Tree-sitter S-expression syntax, Mattias Engdegård, 2023/06/17
- bug#64017: Wrong conversion from Emacs to Tree-sitter S-expression syntax, Yuan Fu, 2023/06/17