mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-18 03:10:04 -04:00
Gleam indentation tests
This commit is contained in:
parent
4a5720332d
commit
b62750e328
16 changed files with 239 additions and 0 deletions
|
|
@ -1,16 +1,25 @@
|
||||||
; Gleam indents similar to Rust and JavaScript
|
; Gleam indents similar to Rust and JavaScript
|
||||||
[
|
[
|
||||||
|
(assert)
|
||||||
(case)
|
(case)
|
||||||
(case_clause)
|
(case_clause)
|
||||||
(constant)
|
(constant)
|
||||||
(expression_group)
|
(expression_group)
|
||||||
|
(external_function)
|
||||||
(function)
|
(function)
|
||||||
|
(import)
|
||||||
(let)
|
(let)
|
||||||
(list)
|
(list)
|
||||||
|
(public_constant)
|
||||||
|
(public_external_function)
|
||||||
(public_function)
|
(public_function)
|
||||||
(public_opaque_type_definition)
|
(public_opaque_type_definition)
|
||||||
|
(public_type_alias)
|
||||||
(public_type_definition)
|
(public_type_definition)
|
||||||
|
(todo)
|
||||||
|
(try)
|
||||||
(tuple)
|
(tuple)
|
||||||
|
(type_alias)
|
||||||
(type_definition)
|
(type_definition)
|
||||||
] @indent
|
] @indent
|
||||||
|
|
||||||
|
|
@ -19,3 +28,6 @@
|
||||||
"]"
|
"]"
|
||||||
"}"
|
"}"
|
||||||
] @indent_end @branch
|
] @indent_end @branch
|
||||||
|
|
||||||
|
; Gleam pipelines are not indented, but other binary expression chains are
|
||||||
|
((binary_expression operator: _ @_operator) @indent (#not-eq? @_operator "|>"))
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ vim.cmd [[runtime! plugin/plenary.vim]]
|
||||||
vim.cmd [[runtime! plugin/nvim-treesitter.vim]]
|
vim.cmd [[runtime! plugin/nvim-treesitter.vim]]
|
||||||
|
|
||||||
vim.cmd [[au BufRead,BufNewFile *.conf set filetype=hocon]]
|
vim.cmd [[au BufRead,BufNewFile *.conf set filetype=hocon]]
|
||||||
|
vim.cmd [[au BufRead,BufNewFile *.gleam set filetype=gleam]]
|
||||||
|
|
||||||
vim.o.swapfile = false
|
vim.o.swapfile = false
|
||||||
vim.bo.swapfile = false
|
vim.bo.swapfile = false
|
||||||
|
|
|
||||||
4
tests/indent/gleam/assert.gleam
Normal file
4
tests/indent/gleam/assert.gleam
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
pub fn main() {
|
||||||
|
assert Ok(i) =
|
||||||
|
parse_int("123")
|
||||||
|
}
|
||||||
4
tests/indent/gleam/binary_expression.gleam
Normal file
4
tests/indent/gleam/binary_expression.gleam
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
pub fn main() {
|
||||||
|
True &&
|
||||||
|
False
|
||||||
|
}
|
||||||
10
tests/indent/gleam/case.gleam
Normal file
10
tests/indent/gleam/case.gleam
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
pub fn main() {
|
||||||
|
case 1 {
|
||||||
|
1 -> "One"
|
||||||
|
2 -> {
|
||||||
|
case 2 {
|
||||||
|
2 -> "Two"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
tests/indent/gleam/constant.gleam
Normal file
2
tests/indent/gleam/constant.gleam
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
pub const foo =
|
||||||
|
"bar"
|
||||||
15
tests/indent/gleam/function.gleam
Normal file
15
tests/indent/gleam/function.gleam
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
import gleam/io
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
io.println("Hello from main!")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn hidden() {
|
||||||
|
io.println("Hello from hidden!")
|
||||||
|
}
|
||||||
|
|
||||||
|
pub external fn inspect(a) -> a =
|
||||||
|
"Elixir.IO" "inspect"
|
||||||
|
|
||||||
|
external fn inspect(a) -> a =
|
||||||
|
"Elixir.IO" "inspect"
|
||||||
4
tests/indent/gleam/import.gleam
Normal file
4
tests/indent/gleam/import.gleam
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
import foo.{
|
||||||
|
Bar,
|
||||||
|
baz,
|
||||||
|
}
|
||||||
4
tests/indent/gleam/let.gleam
Normal file
4
tests/indent/gleam/let.gleam
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
pub fn main() {
|
||||||
|
let string =
|
||||||
|
"string"
|
||||||
|
}
|
||||||
11
tests/indent/gleam/list.gleam
Normal file
11
tests/indent/gleam/list.gleam
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
pub fn main() {
|
||||||
|
[
|
||||||
|
a,
|
||||||
|
..[
|
||||||
|
b,
|
||||||
|
..[
|
||||||
|
c,
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
4
tests/indent/gleam/pipe.gleam
Normal file
4
tests/indent/gleam/pipe.gleam
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
pub fn main() {
|
||||||
|
one()
|
||||||
|
|> two()
|
||||||
|
}
|
||||||
5
tests/indent/gleam/todo.gleam
Normal file
5
tests/indent/gleam/todo.gleam
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
pub fn main() {
|
||||||
|
todo(
|
||||||
|
"Foo"
|
||||||
|
)
|
||||||
|
}
|
||||||
7
tests/indent/gleam/try.gleam
Normal file
7
tests/indent/gleam/try.gleam
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
pub fn main() {
|
||||||
|
try int_a =
|
||||||
|
parse_int(a)
|
||||||
|
try int_b =
|
||||||
|
parse_int(b)
|
||||||
|
Ok(int_a + int_b)
|
||||||
|
}
|
||||||
11
tests/indent/gleam/tuple.gleam
Normal file
11
tests/indent/gleam/tuple.gleam
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
pub fn main() {
|
||||||
|
#(
|
||||||
|
a,
|
||||||
|
#(
|
||||||
|
b,
|
||||||
|
#(
|
||||||
|
c
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
18
tests/indent/gleam/type.gleam
Normal file
18
tests/indent/gleam/type.gleam
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
pub type Cat {
|
||||||
|
Cat(name: String, cuteness: Int)
|
||||||
|
}
|
||||||
|
|
||||||
|
type User {
|
||||||
|
LoggedIn(name: String)
|
||||||
|
Guest
|
||||||
|
}
|
||||||
|
|
||||||
|
pub opaque type Counter {
|
||||||
|
Counter(value: Int)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub type Headers =
|
||||||
|
List(#(String, String))
|
||||||
|
|
||||||
|
type Headers =
|
||||||
|
List(#(String, String))
|
||||||
127
tests/indent/gleam_spec.lua
Normal file
127
tests/indent/gleam_spec.lua
Normal file
|
|
@ -0,0 +1,127 @@
|
||||||
|
local Runner = require("tests.indent.common").Runner
|
||||||
|
|
||||||
|
local run = Runner:new(it, "tests/indent/gleam", {
|
||||||
|
tabstop = 2,
|
||||||
|
shiftwidth = 2,
|
||||||
|
softtabstop = 2,
|
||||||
|
expandtab = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("indent Gleam:", function()
|
||||||
|
describe("whole file:", function()
|
||||||
|
run:whole_file "."
|
||||||
|
end)
|
||||||
|
describe("new line:", function()
|
||||||
|
run:new_line("type.gleam", { on_line = 1, text = "//", indent = 2 })
|
||||||
|
run:new_line("type.gleam", { on_line = 2, text = "//", indent = 2 })
|
||||||
|
run:new_line("type.gleam", { on_line = 3, text = "//", indent = 0 })
|
||||||
|
run:new_line("type.gleam", { on_line = 4, text = "//", indent = 0 })
|
||||||
|
run:new_line("type.gleam", { on_line = 5, text = "//", indent = 2 })
|
||||||
|
run:new_line("type.gleam", { on_line = 6, text = "//", indent = 2 })
|
||||||
|
run:new_line("type.gleam", { on_line = 7, text = "//", indent = 2 })
|
||||||
|
run:new_line("type.gleam", { on_line = 8, text = "//", indent = 0 })
|
||||||
|
run:new_line("type.gleam", { on_line = 9, text = "//", indent = 0 })
|
||||||
|
run:new_line("type.gleam", { on_line = 10, text = "//", indent = 2 })
|
||||||
|
run:new_line("type.gleam", { on_line = 11, text = "//", indent = 2 })
|
||||||
|
run:new_line("type.gleam", { on_line = 12, text = "//", indent = 0 })
|
||||||
|
run:new_line("type.gleam", { on_line = 13, text = "//", indent = 0 })
|
||||||
|
run:new_line("type.gleam", { on_line = 14, text = "//", indent = 2 })
|
||||||
|
run:new_line("type.gleam", { on_line = 15, text = "//", indent = 0 })
|
||||||
|
run:new_line("type.gleam", { on_line = 16, text = "//", indent = 0 })
|
||||||
|
run:new_line("type.gleam", { on_line = 17, text = "//", indent = 2 })
|
||||||
|
run:new_line("type.gleam", { on_line = 18, text = "//", indent = 0 })
|
||||||
|
|
||||||
|
run:new_line("function.gleam", { on_line = 1, text = "//", indent = 0 })
|
||||||
|
run:new_line("function.gleam", { on_line = 2, text = "//", indent = 0 })
|
||||||
|
run:new_line("function.gleam", { on_line = 3, text = "//", indent = 2 })
|
||||||
|
run:new_line("function.gleam", { on_line = 4, text = "//", indent = 2 })
|
||||||
|
run:new_line("function.gleam", { on_line = 5, text = "//", indent = 0 })
|
||||||
|
run:new_line("function.gleam", { on_line = 6, text = "//", indent = 0 })
|
||||||
|
run:new_line("function.gleam", { on_line = 7, text = "//", indent = 2 })
|
||||||
|
run:new_line("function.gleam", { on_line = 8, text = "//", indent = 2 })
|
||||||
|
run:new_line("function.gleam", { on_line = 9, text = "//", indent = 0 })
|
||||||
|
run:new_line("function.gleam", { on_line = 10, text = "//", indent = 0 })
|
||||||
|
run:new_line("function.gleam", { on_line = 11, text = "//", indent = 2 })
|
||||||
|
run:new_line("function.gleam", { on_line = 12, text = "//", indent = 2 })
|
||||||
|
run:new_line("function.gleam", { on_line = 13, text = "//", indent = 2 })
|
||||||
|
run:new_line("function.gleam", { on_line = 14, text = "//", indent = 2 })
|
||||||
|
run:new_line("function.gleam", { on_line = 15, text = "//", indent = 2 })
|
||||||
|
|
||||||
|
run:new_line("list.gleam", { on_line = 1, text = "//", indent = 2 })
|
||||||
|
run:new_line("list.gleam", { on_line = 2, text = "//", indent = 4 })
|
||||||
|
run:new_line("list.gleam", { on_line = 3, text = "//", indent = 4 })
|
||||||
|
run:new_line("list.gleam", { on_line = 4, text = "//", indent = 6 })
|
||||||
|
run:new_line("list.gleam", { on_line = 5, text = "//", indent = 6 })
|
||||||
|
run:new_line("list.gleam", { on_line = 6, text = "//", indent = 8 })
|
||||||
|
run:new_line("list.gleam", { on_line = 7, text = "//", indent = 8 })
|
||||||
|
run:new_line("list.gleam", { on_line = 8, text = "//", indent = 6 })
|
||||||
|
run:new_line("list.gleam", { on_line = 9, text = "//", indent = 4 })
|
||||||
|
run:new_line("list.gleam", { on_line = 10, text = "//", indent = 2 })
|
||||||
|
run:new_line("list.gleam", { on_line = 11, text = "//", indent = 0 })
|
||||||
|
|
||||||
|
run:new_line("tuple.gleam", { on_line = 1, text = "//", indent = 2 })
|
||||||
|
run:new_line("tuple.gleam", { on_line = 2, text = "//", indent = 4 })
|
||||||
|
run:new_line("tuple.gleam", { on_line = 3, text = "//", indent = 4 })
|
||||||
|
run:new_line("tuple.gleam", { on_line = 4, text = "//", indent = 6 })
|
||||||
|
run:new_line("tuple.gleam", { on_line = 5, text = "//", indent = 6 })
|
||||||
|
run:new_line("tuple.gleam", { on_line = 6, text = "//", indent = 8 })
|
||||||
|
run:new_line("tuple.gleam", { on_line = 7, text = "//", indent = 8 })
|
||||||
|
run:new_line("tuple.gleam", { on_line = 8, text = "//", indent = 6 })
|
||||||
|
run:new_line("tuple.gleam", { on_line = 9, text = "//", indent = 4 })
|
||||||
|
run:new_line("tuple.gleam", { on_line = 10, text = "//", indent = 2 })
|
||||||
|
run:new_line("tuple.gleam", { on_line = 11, text = "//", indent = 0 })
|
||||||
|
|
||||||
|
run:new_line("case.gleam", { on_line = 1, text = "//", indent = 2 })
|
||||||
|
run:new_line("case.gleam", { on_line = 2, text = "//", indent = 4 })
|
||||||
|
run:new_line("case.gleam", { on_line = 3, text = "//", indent = 4 })
|
||||||
|
run:new_line("case.gleam", { on_line = 4, text = "//", indent = 6 })
|
||||||
|
run:new_line("case.gleam", { on_line = 5, text = "//", indent = 8 })
|
||||||
|
run:new_line("case.gleam", { on_line = 6, text = "//", indent = 8 })
|
||||||
|
run:new_line("case.gleam", { on_line = 7, text = "//", indent = 6 })
|
||||||
|
run:new_line("case.gleam", { on_line = 8, text = "//", indent = 4 })
|
||||||
|
run:new_line("case.gleam", { on_line = 9, text = "//", indent = 2 })
|
||||||
|
run:new_line("case.gleam", { on_line = 10, text = "//", indent = 0 })
|
||||||
|
|
||||||
|
run:new_line("let.gleam", { on_line = 1, text = "//", indent = 2 })
|
||||||
|
run:new_line("let.gleam", { on_line = 2, text = "//", indent = 4 })
|
||||||
|
run:new_line("let.gleam", { on_line = 3, text = "//", indent = 4 })
|
||||||
|
run:new_line("let.gleam", { on_line = 4, text = "//", indent = 0 })
|
||||||
|
|
||||||
|
run:new_line("pipe.gleam", { on_line = 1, text = "//", indent = 2 })
|
||||||
|
run:new_line("pipe.gleam", { on_line = 2, text = "//", indent = 2 })
|
||||||
|
run:new_line("pipe.gleam", { on_line = 3, text = "//", indent = 2 })
|
||||||
|
run:new_line("pipe.gleam", { on_line = 4, text = "//", indent = 0 })
|
||||||
|
|
||||||
|
run:new_line("binary_expression.gleam", { on_line = 1, text = "//", indent = 2 })
|
||||||
|
run:new_line("binary_expression.gleam", { on_line = 2, text = "//", indent = 4 })
|
||||||
|
run:new_line("binary_expression.gleam", { on_line = 3, text = "//", indent = 4 })
|
||||||
|
run:new_line("binary_expression.gleam", { on_line = 4, text = "//", indent = 0 })
|
||||||
|
|
||||||
|
run:new_line("import.gleam", { on_line = 1, text = "//", indent = 2 })
|
||||||
|
run:new_line("import.gleam", { on_line = 2, text = "//", indent = 2 })
|
||||||
|
run:new_line("import.gleam", { on_line = 3, text = "//", indent = 2 })
|
||||||
|
run:new_line("import.gleam", { on_line = 4, text = "//", indent = 0 })
|
||||||
|
|
||||||
|
run:new_line("constant.gleam", { on_line = 1, text = "//", indent = 2 })
|
||||||
|
run:new_line("constant.gleam", { on_line = 2, text = "//", indent = 2 })
|
||||||
|
|
||||||
|
run:new_line("try.gleam", { on_line = 1, text = "//", indent = 2 })
|
||||||
|
run:new_line("try.gleam", { on_line = 2, text = "//", indent = 4 })
|
||||||
|
run:new_line("try.gleam", { on_line = 3, text = "//", indent = 2 })
|
||||||
|
run:new_line("try.gleam", { on_line = 4, text = "//", indent = 4 })
|
||||||
|
run:new_line("try.gleam", { on_line = 5, text = "//", indent = 2 })
|
||||||
|
run:new_line("try.gleam", { on_line = 6, text = "//", indent = 2 })
|
||||||
|
run:new_line("try.gleam", { on_line = 7, text = "//", indent = 0 })
|
||||||
|
|
||||||
|
run:new_line("assert.gleam", { on_line = 1, text = "//", indent = 2 })
|
||||||
|
run:new_line("assert.gleam", { on_line = 2, text = "//", indent = 4 })
|
||||||
|
run:new_line("assert.gleam", { on_line = 3, text = "//", indent = 2 })
|
||||||
|
run:new_line("assert.gleam", { on_line = 4, text = "//", indent = 0 })
|
||||||
|
|
||||||
|
run:new_line("todo.gleam", { on_line = 1, text = "//", indent = 2 })
|
||||||
|
run:new_line("todo.gleam", { on_line = 2, text = "//", indent = 4 })
|
||||||
|
run:new_line("todo.gleam", { on_line = 3, text = "//", indent = 4 })
|
||||||
|
run:new_line("todo.gleam", { on_line = 4, text = "//", indent = 2 })
|
||||||
|
run:new_line("todo.gleam", { on_line = 5, text = "//", indent = 0 })
|
||||||
|
end)
|
||||||
|
end)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue