mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-01 19:17:02 -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
|
||||
[
|
||||
(assert)
|
||||
(case)
|
||||
(case_clause)
|
||||
(constant)
|
||||
(expression_group)
|
||||
(external_function)
|
||||
(function)
|
||||
(import)
|
||||
(let)
|
||||
(list)
|
||||
(public_constant)
|
||||
(public_external_function)
|
||||
(public_function)
|
||||
(public_opaque_type_definition)
|
||||
(public_type_alias)
|
||||
(public_type_definition)
|
||||
(todo)
|
||||
(try)
|
||||
(tuple)
|
||||
(type_alias)
|
||||
(type_definition)
|
||||
] @indent
|
||||
|
||||
|
|
@ -19,3 +28,6 @@
|
|||
"]"
|
||||
"}"
|
||||
] @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 [[au BufRead,BufNewFile *.conf set filetype=hocon]]
|
||||
vim.cmd [[au BufRead,BufNewFile *.gleam set filetype=gleam]]
|
||||
|
||||
vim.o.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