Add luacode and asy as verbatim environments (#141)

Adds the following source code environments:
- `asy`
- `asydef`
- `luacode`
- `luacode*`

Fixes #140.
pull/813/head
Patrick Förster 2024-07-18 17:35:26 +07:00 committed by GitHub
parent 5b6b442b2a
commit 107435ada4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 1123 additions and 128 deletions

@ -65,6 +65,9 @@ jobs:
else
printf 'changed=true\n' >> "$GITHUB_OUTPUT"
fi
- name: Set up tree-sitter
uses: tree-sitter/setup-action/cli@v1
if: steps.scanner-check.outputs.changed == 'true'
- name: Run parser and binding tests
uses: tree-sitter/parser-test-action@v2
with:

@ -46,7 +46,11 @@ module.exports = grammar({
$._trivia_raw_env_verbatim,
$._trivia_raw_env_listing,
$._trivia_raw_env_minted,
$._trivia_raw_env_asy,
$._trivia_raw_env_asydef,
$._trivia_raw_env_pycode,
$._trivia_raw_env_luacode,
$._trivia_raw_env_luacode_star,
$._trivia_raw_env_sagesilent,
$._trivia_raw_env_sageblock,
],
@ -81,7 +85,10 @@ module.exports = grammar({
$.verbatim_environment,
$.listing_environment,
$.minted_environment,
$.asy_environment,
$.asydef_environment,
$.pycode_environment,
$.luacode_environment,
$.sagesilent_environment,
$.sageblock_environment,
$.generic_environment,
@ -491,6 +498,21 @@ module.exports = grammar({
),
}),
...specialEnvironment({
rule: 'asy_environment',
name: 'asy',
content: $ => field('code', alias($._trivia_raw_env_asy, $.source_code)),
options: undefined,
}),
...specialEnvironment({
rule: 'asydef_environment',
name: 'asydef',
content: $ =>
field('code', alias($._trivia_raw_env_asydef, $.source_code)),
options: undefined,
}),
...specialEnvironment({
rule: 'pycode_environment',
name: 'pycode',
@ -499,6 +521,25 @@ module.exports = grammar({
options: undefined,
}),
luacode_environment: $ =>
choice($._luacode_environment, $._luacode_environment_star),
...specialEnvironment({
rule: '_luacode_environment',
name: 'luacode',
content: $ =>
field('code', alias($._trivia_raw_env_luacode, $.source_code)),
options: undefined,
}),
...specialEnvironment({
rule: '_luacode_environment_star',
name: 'luacode*',
content: $ =>
field('code', alias($._trivia_raw_env_luacode_star, $.source_code)),
options: undefined,
}),
...specialEnvironment({
rule: 'sagesilent_environment',
name: 'sagesilent',

4
package-lock.json generated

@ -16,10 +16,10 @@
"devDependencies": {
"prebuildify": "^6.0.0",
"prettier": "^3.0.3",
"tree-sitter-cli": "^0.22.2"
"tree-sitter-cli": "^0.22.6"
},
"peerDependencies": {
"tree-sitter": "^0.21.0"
"tree-sitter": "^0.21.1"
},
"peerDependenciesMeta": {
"tree_sitter": {

@ -39,7 +39,7 @@
"node-gyp-build": "^4.8.0"
},
"peerDependencies": {
"tree-sitter": "^0.21.0"
"tree-sitter": "^0.21.1"
},
"peerDependenciesMeta": {
"tree_sitter": {
@ -48,7 +48,7 @@
},
"devDependencies": {
"prettier": "^3.0.3",
"tree-sitter-cli": "^0.22.2",
"tree-sitter-cli": "^0.22.6",
"prebuildify": "^6.0.0"
},
"tree-sitter": [

File diff suppressed because it is too large Load Diff

@ -259,6 +259,78 @@
}
}
},
{
"type": "asy_environment",
"named": true,
"fields": {
"begin": {
"multiple": false,
"required": true,
"types": [
{
"type": "begin",
"named": true
}
]
},
"code": {
"multiple": false,
"required": true,
"types": [
{
"type": "source_code",
"named": true
}
]
},
"end": {
"multiple": false,
"required": true,
"types": [
{
"type": "end",
"named": true
}
]
}
}
},
{
"type": "asydef_environment",
"named": true,
"fields": {
"begin": {
"multiple": false,
"required": true,
"types": [
{
"type": "begin",
"named": true
}
]
},
"code": {
"multiple": false,
"required": true,
"types": [
{
"type": "source_code",
"named": true
}
]
},
"end": {
"multiple": false,
"required": true,
"types": [
{
"type": "end",
"named": true
}
]
}
}
},
{
"type": "author",
"named": true,
@ -654,6 +726,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -782,6 +862,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -1000,6 +1084,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -1128,6 +1220,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -1753,6 +1849,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -1885,6 +1989,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -2326,6 +2434,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -2458,6 +2574,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -2624,6 +2744,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -2748,6 +2876,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -2962,6 +3094,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -3094,6 +3234,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -3634,6 +3778,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -3766,6 +3918,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -4205,6 +4361,42 @@
}
}
},
{
"type": "luacode_environment",
"named": true,
"fields": {
"begin": {
"multiple": false,
"required": true,
"types": [
{
"type": "begin",
"named": true
}
]
},
"code": {
"multiple": false,
"required": true,
"types": [
{
"type": "source_code",
"named": true
}
]
},
"end": {
"multiple": false,
"required": true,
"types": [
{
"type": "end",
"named": true
}
]
}
}
},
{
"type": "math_delimiter",
"named": true,
@ -4342,6 +4534,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -4474,6 +4674,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -4610,6 +4814,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -4734,6 +4946,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -5161,6 +5377,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -5289,6 +5513,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -5427,6 +5655,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -5559,6 +5795,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -5821,6 +6061,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -5949,6 +6197,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -6056,6 +6308,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -6188,6 +6448,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -6338,6 +6602,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -6466,6 +6738,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -6616,6 +6892,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -6744,6 +7028,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true
@ -6882,6 +7170,14 @@
"type": "acronym_reference",
"named": true
},
{
"type": "asy_environment",
"named": true
},
{
"type": "asydef_environment",
"named": true
},
{
"type": "author_declaration",
"named": true
@ -7010,6 +7306,10 @@
"type": "listing_environment",
"named": true
},
{
"type": "luacode_environment",
"named": true
},
{
"type": "math_delimiter",
"named": true

@ -9,7 +9,11 @@ enum TokenType {
TRIVIA_RAW_ENV_VERBATIM,
TRIVIA_RAW_ENV_LISTING,
TRIVIA_RAW_ENV_MINTED,
TRIVIA_RAW_ENV_ASY,
TRIVIA_RAW_ENV_ASYDEF,
TRIVIA_RAW_ENV_PYCODE,
TRIVIA_RAW_ENV_LUACODE,
TRIVIA_RAW_ENV_LUACODE_STAR,
TRIVIA_RAW_ENV_SAGESILENT,
TRIVIA_RAW_ENV_SAGEBLOCK,
};
@ -119,6 +123,14 @@ bool tree_sitter_latex_external_scanner_scan(void *payload, TSLexer *lexer,
return find_verbatim(lexer, "\\end{minted}", false);
case TRIVIA_RAW_ENV_PYCODE:
return find_verbatim(lexer, "\\end{pycode}", false);
case TRIVIA_RAW_ENV_ASY:
return find_verbatim(lexer, "\\end{asy}", false);
case TRIVIA_RAW_ENV_ASYDEF:
return find_verbatim(lexer, "\\end{asydef}", false);
case TRIVIA_RAW_ENV_LUACODE:
return find_verbatim(lexer, "\\end{luacode}", false);
case TRIVIA_RAW_ENV_LUACODE_STAR:
return find_verbatim(lexer, "\\end{luacode*}", false);
case TRIVIA_RAW_ENV_SAGESILENT:
return find_verbatim(lexer, "\\end{sagesilent}", false);
case TRIVIA_RAW_ENV_SAGEBLOCK:

@ -236,6 +236,28 @@ Pycode environment
(text
(word))))))
================================================================================
Luacode* environment
================================================================================
\begin{luacode*}
Hello World
\end{luacode*}
--------------------------------------------------------------------------------
(source_file
(luacode_environment
(begin
(curly_group_text
(text
(word))))
(source_code)
(end
(curly_group_text
(text
(word))))))
================================================================================
Sagesilent environment
================================================================================