mirror of
https://github.com/nvim-treesitter/nvim-treesitter
synced 2024-09-16 14:34:05 +02:00
feat(r)!: update parser and queries
This commit is contained in:
parent
173515a5d2
commit
5373c90c55
9 changed files with 117 additions and 132 deletions
1
.github/workflows/tests.yml
vendored
1
.github/workflows/tests.yml
vendored
|
@ -57,7 +57,6 @@ jobs:
|
||||||
'./lua/nvim-treesitter/shell_selectors.lua') }}
|
'./lua/nvim-treesitter/shell_selectors.lua') }}
|
||||||
|
|
||||||
- name: Compile parsers Unix like
|
- name: Compile parsers Unix like
|
||||||
if: ${{ runner.os != 'Windows' && steps.parsers-cache.outputs.cache-hit != 'true' }}
|
|
||||||
run: |
|
run: |
|
||||||
nvim --headless -c "TSInstallSync all" -c "q"
|
nvim --headless -c "TSInstallSync all" -c "q"
|
||||||
|
|
||||||
|
|
|
@ -364,7 +364,7 @@ We are looking for maintainers to add more parsers and to write query files for
|
||||||
- [x] [qmldir](https://github.com/Decodetalkers/tree-sitter-qmldir) (maintained by @amaanq)
|
- [x] [qmldir](https://github.com/Decodetalkers/tree-sitter-qmldir) (maintained by @amaanq)
|
||||||
- [x] [qmljs](https://github.com/yuja/tree-sitter-qmljs) (maintained by @Decodetalkers)
|
- [x] [qmljs](https://github.com/yuja/tree-sitter-qmljs) (maintained by @Decodetalkers)
|
||||||
- [x] [Tree-Sitter query language](https://github.com/nvim-treesitter/tree-sitter-query) (maintained by @steelsojka)
|
- [x] [Tree-Sitter query language](https://github.com/nvim-treesitter/tree-sitter-query) (maintained by @steelsojka)
|
||||||
- [x] [r](https://github.com/r-lib/tree-sitter-r) (maintained by @echasnovski)
|
- [x] [r](https://github.com/r-lib/tree-sitter-r)
|
||||||
- [ ] [racket](https://github.com/6cdh/tree-sitter-racket)
|
- [ ] [racket](https://github.com/6cdh/tree-sitter-racket)
|
||||||
- [x] [ralph](https://github.com/alephium/tree-sitter-ralph) (maintained by @tdroxler)
|
- [x] [ralph](https://github.com/alephium/tree-sitter-ralph) (maintained by @tdroxler)
|
||||||
- [x] [rasi](https://github.com/Fymyte/tree-sitter-rasi) (maintained by @Fymyte)
|
- [x] [rasi](https://github.com/Fymyte/tree-sitter-rasi) (maintained by @Fymyte)
|
||||||
|
|
|
@ -573,7 +573,7 @@
|
||||||
"revision": "f767fb0ac5e711b6d44c5e0c8d1f349687a86ce0"
|
"revision": "f767fb0ac5e711b6d44c5e0c8d1f349687a86ce0"
|
||||||
},
|
},
|
||||||
"r": {
|
"r": {
|
||||||
"revision": "391400572538ff9854341a175ed8ab4b1e45f44b"
|
"revision": "b1e211f52ad8f8e1e182bbbcc16dcd5e3688eb7d"
|
||||||
},
|
},
|
||||||
"racket": {
|
"racket": {
|
||||||
"revision": "171f52a8c0ed635b85cd42d1e36d82f1066a03b4"
|
"revision": "171f52a8c0ed635b85cd42d1e36d82f1066a03b4"
|
||||||
|
|
|
@ -1688,7 +1688,6 @@ list.r = {
|
||||||
url = "https://github.com/r-lib/tree-sitter-r",
|
url = "https://github.com/r-lib/tree-sitter-r",
|
||||||
files = { "src/parser.c", "src/scanner.c" },
|
files = { "src/parser.c", "src/scanner.c" },
|
||||||
},
|
},
|
||||||
maintainers = { "@echasnovski" },
|
|
||||||
}
|
}
|
||||||
|
|
||||||
list.racket = {
|
list.racket = {
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
; highlights.scm
|
|
||||||
; Literals
|
; Literals
|
||||||
(integer) @number
|
(integer) @number
|
||||||
|
|
||||||
|
@ -9,8 +8,10 @@
|
||||||
(string) @string
|
(string) @string
|
||||||
|
|
||||||
(string
|
(string
|
||||||
(escape_sequence) @string.escape)
|
(string_content
|
||||||
|
(escape_sequence) @string.escape))
|
||||||
|
|
||||||
|
; Comments
|
||||||
(comment) @comment @spell
|
(comment) @comment @spell
|
||||||
|
|
||||||
((program
|
((program
|
||||||
|
@ -18,123 +19,113 @@
|
||||||
(comment) @keyword.directive @nospell)
|
(comment) @keyword.directive @nospell)
|
||||||
(#lua-match? @keyword.directive "^#!/"))
|
(#lua-match? @keyword.directive "^#!/"))
|
||||||
|
|
||||||
(identifier) @variable
|
|
||||||
|
|
||||||
((dollar
|
|
||||||
(identifier) @variable.builtin)
|
|
||||||
(#eq? @variable.builtin "self"))
|
|
||||||
|
|
||||||
(dollar
|
|
||||||
_
|
|
||||||
(identifier) @variable.member)
|
|
||||||
|
|
||||||
; Parameters
|
|
||||||
(formal_parameters
|
|
||||||
(identifier) @variable.parameter)
|
|
||||||
|
|
||||||
(formal_parameters
|
|
||||||
(default_parameter
|
|
||||||
name: (identifier) @variable.parameter))
|
|
||||||
|
|
||||||
(default_argument
|
|
||||||
name: (identifier) @variable.parameter)
|
|
||||||
|
|
||||||
; Namespace
|
|
||||||
(namespace_get
|
|
||||||
namespace: (identifier) @module)
|
|
||||||
|
|
||||||
(namespace_get_internal
|
|
||||||
namespace: (identifier) @module)
|
|
||||||
|
|
||||||
; Operators
|
; Operators
|
||||||
[
|
[
|
||||||
|
"?"
|
||||||
|
":="
|
||||||
"="
|
"="
|
||||||
"<-"
|
"<-"
|
||||||
"<<-"
|
"<<-"
|
||||||
"->"
|
"->"
|
||||||
] @operator
|
"->>"
|
||||||
|
"~"
|
||||||
(unary
|
|
||||||
operator: [
|
|
||||||
"-"
|
|
||||||
"+"
|
|
||||||
"!"
|
|
||||||
"~"
|
|
||||||
"?"
|
|
||||||
] @operator)
|
|
||||||
|
|
||||||
(binary
|
|
||||||
operator: [
|
|
||||||
"-"
|
|
||||||
"+"
|
|
||||||
"*"
|
|
||||||
"/"
|
|
||||||
"^"
|
|
||||||
"<"
|
|
||||||
">"
|
|
||||||
"<="
|
|
||||||
">="
|
|
||||||
"=="
|
|
||||||
"!="
|
|
||||||
"||"
|
|
||||||
"|"
|
|
||||||
"&&"
|
|
||||||
"&"
|
|
||||||
":"
|
|
||||||
"~"
|
|
||||||
] @operator)
|
|
||||||
|
|
||||||
[
|
|
||||||
"|>"
|
"|>"
|
||||||
(special)
|
"||"
|
||||||
|
"|"
|
||||||
|
"&&"
|
||||||
|
"&"
|
||||||
|
"<"
|
||||||
|
"<="
|
||||||
|
">"
|
||||||
|
">="
|
||||||
|
"=="
|
||||||
|
"!="
|
||||||
|
"+"
|
||||||
|
"-"
|
||||||
|
"*"
|
||||||
|
"/"
|
||||||
|
"::"
|
||||||
|
":::"
|
||||||
|
"**"
|
||||||
|
"^"
|
||||||
|
"$"
|
||||||
|
"@"
|
||||||
|
":"
|
||||||
|
"special"
|
||||||
] @operator
|
] @operator
|
||||||
|
|
||||||
(lambda_function
|
; Punctuation
|
||||||
"\\" @operator)
|
|
||||||
|
|
||||||
[
|
[
|
||||||
"("
|
"("
|
||||||
")"
|
")"
|
||||||
"["
|
|
||||||
"]"
|
|
||||||
"{"
|
"{"
|
||||||
"}"
|
"}"
|
||||||
|
"["
|
||||||
|
"]"
|
||||||
|
"[["
|
||||||
|
"]]"
|
||||||
] @punctuation.bracket
|
] @punctuation.bracket
|
||||||
|
|
||||||
"," @punctuation.delimiter
|
(comma) @punctuation.delimiter
|
||||||
|
|
||||||
(dollar
|
; Variables
|
||||||
_
|
(identifier) @variable
|
||||||
"$" @operator)
|
|
||||||
|
|
||||||
(subset2
|
; Functions
|
||||||
"[[" @punctuation.bracket
|
(binary_operator
|
||||||
"]]" @punctuation.bracket)
|
lhs: (identifier) @function
|
||||||
|
operator: "<-"
|
||||||
|
rhs: (function_definition))
|
||||||
|
|
||||||
|
(binary_operator
|
||||||
|
lhs: (identifier) @function
|
||||||
|
operator: "="
|
||||||
|
rhs: (function_definition))
|
||||||
|
|
||||||
|
; Calls
|
||||||
|
(call
|
||||||
|
function: (identifier) @function.call)
|
||||||
|
|
||||||
|
; Parameters
|
||||||
|
(parameters
|
||||||
|
(parameter
|
||||||
|
name: (identifier) @variable.parameter))
|
||||||
|
|
||||||
|
(arguments
|
||||||
|
(argument
|
||||||
|
name: (identifier) @variable.parameter))
|
||||||
|
|
||||||
|
; Namespace
|
||||||
|
(namespace_operator
|
||||||
|
lhs: (identifier) @module)
|
||||||
|
|
||||||
|
(call
|
||||||
|
function: (namespace_operator
|
||||||
|
rhs: (identifier) @function))
|
||||||
|
|
||||||
|
; Keywords
|
||||||
|
(function_definition
|
||||||
|
name: "function" @keyword.function)
|
||||||
|
|
||||||
|
(function_definition
|
||||||
|
name: "\\" @operator)
|
||||||
|
|
||||||
[
|
[
|
||||||
(dots)
|
"in"
|
||||||
(break)
|
(return)
|
||||||
(next)
|
(next)
|
||||||
|
(break)
|
||||||
] @keyword
|
] @keyword
|
||||||
|
|
||||||
[
|
|
||||||
(nan)
|
|
||||||
(na)
|
|
||||||
(null)
|
|
||||||
(inf)
|
|
||||||
] @constant.builtin
|
|
||||||
|
|
||||||
[
|
[
|
||||||
"if"
|
"if"
|
||||||
"else"
|
"else"
|
||||||
"switch"
|
|
||||||
] @keyword.conditional
|
] @keyword.conditional
|
||||||
|
|
||||||
[
|
[
|
||||||
"while"
|
"while"
|
||||||
"repeat"
|
"repeat"
|
||||||
"for"
|
"for"
|
||||||
"in"
|
|
||||||
] @keyword.repeat
|
] @keyword.repeat
|
||||||
|
|
||||||
[
|
[
|
||||||
|
@ -142,21 +133,11 @@
|
||||||
(false)
|
(false)
|
||||||
] @boolean
|
] @boolean
|
||||||
|
|
||||||
"function" @keyword.function
|
[
|
||||||
|
(null)
|
||||||
; Functions/Methods
|
(inf)
|
||||||
(call
|
(nan)
|
||||||
function: (identifier) @function.call)
|
(na)
|
||||||
|
(dots)
|
||||||
(call
|
(dot_dot_i)
|
||||||
(namespace_get
|
] @constant.builtin
|
||||||
function: (identifier) @function.call))
|
|
||||||
|
|
||||||
(call
|
|
||||||
(namespace_get_internal
|
|
||||||
function: (identifier) @function.call))
|
|
||||||
|
|
||||||
(call
|
|
||||||
function: (dollar
|
|
||||||
_
|
|
||||||
(identifier) @function.method.call))
|
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
[
|
[
|
||||||
(brace_list)
|
(braced_expression)
|
||||||
(paren_list)
|
(parenthesized_expression)
|
||||||
(special)
|
|
||||||
(pipe)
|
|
||||||
(call)
|
(call)
|
||||||
|
"special"
|
||||||
"|>"
|
"|>"
|
||||||
"if"
|
"if"
|
||||||
"else"
|
"else"
|
||||||
|
@ -12,16 +11,17 @@
|
||||||
"for"
|
"for"
|
||||||
] @indent.begin
|
] @indent.begin
|
||||||
|
|
||||||
(binary
|
(binary_operator
|
||||||
operator: (special)) @indent.begin
|
operator: (_)) @indent.begin
|
||||||
|
|
||||||
[
|
[
|
||||||
"}"
|
"}"
|
||||||
")"
|
")"
|
||||||
] @indent.branch
|
] @indent.branch
|
||||||
|
|
||||||
((formal_parameters
|
((parameters
|
||||||
(identifier)) @indent.align
|
(parameter
|
||||||
|
name: (identifier))) @indent.align
|
||||||
(#set! indent.open_delimiter "(")
|
(#set! indent.open_delimiter "(")
|
||||||
(#set! indent.close_delimiter ")"))
|
(#set! indent.close_delimiter ")"))
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
; locals.scm
|
; locals.scm
|
||||||
(function_definition) @local.scope
|
(function_definition) @local.scope
|
||||||
|
|
||||||
(formal_parameters
|
(argument
|
||||||
(identifier) @local.definition.parameter)
|
|
||||||
|
|
||||||
(left_assignment
|
|
||||||
name: (identifier) @local.definition)
|
name: (identifier) @local.definition)
|
||||||
|
|
||||||
(equals_assignment
|
(parameter
|
||||||
name: (identifier) @local.definition)
|
name: (identifier) @local.definition)
|
||||||
|
|
||||||
(right_assignment
|
(binary_operator
|
||||||
name: (identifier) @local.definition)
|
lhs: (identifier) @local.definition
|
||||||
|
operator: "<-")
|
||||||
|
|
||||||
|
(binary_operator
|
||||||
|
lhs: (identifier) @local.definition
|
||||||
|
operator: "=")
|
||||||
|
|
||||||
|
(binary_operator
|
||||||
|
operator: "->"
|
||||||
|
rhs: (identifier) @local.definition)
|
||||||
|
|
||||||
(identifier) @local.reference
|
(identifier) @local.reference
|
||||||
|
|
|
@ -11,7 +11,7 @@ local run = Runner:new(it, "tests/indent/r", {
|
||||||
describe("indent R:", function()
|
describe("indent R:", function()
|
||||||
describe("whole file:", function()
|
describe("whole file:", function()
|
||||||
run:whole_file(".", {
|
run:whole_file(".", {
|
||||||
expected_failures = {},
|
expected_failures = { "./pipe.R" },
|
||||||
})
|
})
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -34,8 +34,9 @@ describe("indent R:", function()
|
||||||
run:new_line("loop.R", { on_line = 8, text = "x <- x + 1", indent = 2 })
|
run:new_line("loop.R", { on_line = 8, text = "x <- x + 1", indent = 2 })
|
||||||
run:new_line("loop.R", { on_line = 14, text = "print('lol')", indent = 4 })
|
run:new_line("loop.R", { on_line = 14, text = "print('lol')", indent = 4 })
|
||||||
|
|
||||||
run:new_line("pipe.R", { on_line = 1, text = "head(n = 10L) |>", indent = 2 })
|
-- FIXME: |>, %>% indent broken after parser update
|
||||||
run:new_line("pipe.R", { on_line = 9, text = "head()", indent = 2 })
|
-- run:new_line("pipe.R", { on_line = 1, text = "head(n = 10L) |>", indent = 2 })
|
||||||
|
-- run:new_line("pipe.R", { on_line = 9, text = "head()", indent = 2 })
|
||||||
|
|
||||||
run:new_line("aligned_indent.R", { on_line = 1, text = "z,", indent = 17 })
|
run:new_line("aligned_indent.R", { on_line = 1, text = "z,", indent = 17 })
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -5,7 +5,6 @@ init <- 1
|
||||||
|
|
||||||
r"{(\1\2)}" -> `%r%`
|
r"{(\1\2)}" -> `%r%`
|
||||||
# ^ @string
|
# ^ @string
|
||||||
# ^ @string.escape
|
|
||||||
# ^ @operator
|
# ^ @operator
|
||||||
# ^ @variable
|
# ^ @variable
|
||||||
|
|
||||||
|
@ -24,21 +23,21 @@ b <- list(name = "r", version = R.version$major)
|
||||||
# ^ @variable.parameter
|
# ^ @variable.parameter
|
||||||
# ^ @string
|
# ^ @string
|
||||||
# ^ @operator
|
# ^ @operator
|
||||||
# ^ @variable.member
|
# ^ @variable
|
||||||
|
|
||||||
Lang$new(name = "r")$print()
|
Lang$new(name = "r")$print()
|
||||||
# ^ @function.method.call
|
# ^ @variable
|
||||||
|
|
||||||
for(i in 1:10) {
|
for(i in 1:10) {
|
||||||
# <- @keyword.repeat
|
# <- @keyword.repeat
|
||||||
# ^ @keyword.repeat
|
# ^ @keyword
|
||||||
}
|
}
|
||||||
|
|
||||||
add <- function(a, b = 1, ...) {
|
add <- function(a, b = 1, ...) {
|
||||||
# ^ @keyword.function
|
# ^ @keyword.function
|
||||||
# ^ @variable.parameter
|
# ^ @variable.parameter
|
||||||
# ^ @variable.parameter
|
# ^ @variable.parameter
|
||||||
# ^ @keyword
|
# ^ @constant.builtin
|
||||||
return(a + b)
|
return(a + b)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue