mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-19 03:40:04 -04:00
feat: add swift indents (#4756)
This commit is contained in:
parent
b231afbad1
commit
864b4171de
5 changed files with 210 additions and 0 deletions
87
queries/swift/indents.scm
Normal file
87
queries/swift/indents.scm
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
[
|
||||||
|
(protocol_body)
|
||||||
|
(class_body)
|
||||||
|
(function_declaration)
|
||||||
|
(computed_property)
|
||||||
|
(subscript_declaration)
|
||||||
|
|
||||||
|
(computed_getter)
|
||||||
|
(computed_setter)
|
||||||
|
|
||||||
|
(assignment)
|
||||||
|
|
||||||
|
(control_transfer_statement) ; return ...
|
||||||
|
(for_statement)
|
||||||
|
(while_statement)
|
||||||
|
(repeat_while_statement)
|
||||||
|
(do_statement)
|
||||||
|
(if_statement)
|
||||||
|
(switch_statement)
|
||||||
|
(guard_statement)
|
||||||
|
|
||||||
|
(type_parameters) ; x<Foo>
|
||||||
|
(tuple_type) ; (...)
|
||||||
|
(array_type) ; [String]
|
||||||
|
(dictionary_type); [Foo: Bar]
|
||||||
|
|
||||||
|
(call_expression)
|
||||||
|
(tuple_expression)
|
||||||
|
(array_literal)
|
||||||
|
(dictionary_literal)
|
||||||
|
(lambda_literal)
|
||||||
|
] @indent.begin
|
||||||
|
|
||||||
|
; @something(...)
|
||||||
|
((modifiers
|
||||||
|
(attribute) @indent.begin))
|
||||||
|
|
||||||
|
(function_declaration
|
||||||
|
(modifiers
|
||||||
|
.
|
||||||
|
(attribute)
|
||||||
|
(_)* @indent.branch)
|
||||||
|
.
|
||||||
|
_ @indent.branch
|
||||||
|
(#not-has-type? @indent.branch type_parameters parameter))
|
||||||
|
|
||||||
|
|
||||||
|
(ERROR
|
||||||
|
[
|
||||||
|
"<"
|
||||||
|
"{"
|
||||||
|
"("
|
||||||
|
"["
|
||||||
|
]
|
||||||
|
) @indent.begin
|
||||||
|
|
||||||
|
|
||||||
|
; if-elseif
|
||||||
|
(if_statement
|
||||||
|
(if_statement) @indent.dedent)
|
||||||
|
|
||||||
|
(switch_entry . _ @indent.branch)
|
||||||
|
|
||||||
|
(function_declaration ")" @indent.branch)
|
||||||
|
|
||||||
|
(type_parameters ">" @indent.branch @indent.end .)
|
||||||
|
(tuple_expression ")" @indent.branch @indent.end)
|
||||||
|
(value_arguments ")" @indent.branch @indent.end)
|
||||||
|
(tuple_type ")" @indent.branch @indent.end)
|
||||||
|
(modifiers
|
||||||
|
(attribute ")" @indent.branch @indent.end))
|
||||||
|
|
||||||
|
[
|
||||||
|
"}"
|
||||||
|
"]"
|
||||||
|
] @indent.branch @indent.end
|
||||||
|
|
||||||
|
|
||||||
|
[
|
||||||
|
; (ERROR)
|
||||||
|
(comment)
|
||||||
|
(multiline_comment)
|
||||||
|
(raw_str_part)
|
||||||
|
(multi_line_string_literal)
|
||||||
|
] @indent.auto
|
||||||
|
|
||||||
|
(directive) @indent.ignore
|
||||||
51
tests/indent/swift/declarations.swift
Normal file
51
tests/indent/swift/declarations.swift
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
@wrapper
|
||||||
|
@modifier(
|
||||||
|
*
|
||||||
|
)
|
||||||
|
class EquilateralTriangle: NamedShape {
|
||||||
|
var sideLength: Double = 0.0
|
||||||
|
|
||||||
|
@attr
|
||||||
|
init(
|
||||||
|
sideLength: Double,
|
||||||
|
name: String
|
||||||
|
) {
|
||||||
|
self.sideLength = sideLength
|
||||||
|
}
|
||||||
|
|
||||||
|
var perimeter: Double {
|
||||||
|
willSet {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@funcattr
|
||||||
|
override func simpleDescription(a: int, b: int) -> String {
|
||||||
|
return "An equilateral triangle with sides of length \(sideLength)."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@attr
|
||||||
|
protocol ExampleProtocol {
|
||||||
|
var simpleDescription: String { get }
|
||||||
|
mutating func adjust()
|
||||||
|
}
|
||||||
|
|
||||||
|
@available(*)
|
||||||
|
func test() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@attr(*)
|
||||||
|
typealias Foo = Bar
|
||||||
|
|
||||||
|
@attr
|
||||||
|
struct Foo<
|
||||||
|
Bar
|
||||||
|
> {
|
||||||
|
@Provider
|
||||||
|
var test = 1
|
||||||
|
|
||||||
|
subscript(index: Int) -> Int {
|
||||||
|
var foo = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
17
tests/indent/swift/expressions.swift
Normal file
17
tests/indent/swift/expressions.swift
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
func Test() {
|
||||||
|
(1 + 2)
|
||||||
|
|
||||||
|
[
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
5
|
||||||
|
].split()
|
||||||
|
|
||||||
|
let x = [
|
||||||
|
1: 2,
|
||||||
|
3: 4,
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
34
tests/indent/swift/statements.swift
Normal file
34
tests/indent/swift/statements.swift
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
func Test() {
|
||||||
|
if true {
|
||||||
|
return
|
||||||
|
} else if true {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
switch x {
|
||||||
|
case "1":
|
||||||
|
print("x")
|
||||||
|
default:
|
||||||
|
print("y")
|
||||||
|
@unknown default:
|
||||||
|
print("z")
|
||||||
|
}
|
||||||
|
|
||||||
|
for a in b {
|
||||||
|
}
|
||||||
|
|
||||||
|
while true{
|
||||||
|
}
|
||||||
|
|
||||||
|
repeat {
|
||||||
|
|
||||||
|
} while (true)
|
||||||
|
|
||||||
|
guard let name = person["name"] else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
x + 1
|
||||||
|
)
|
||||||
|
}
|
||||||
21
tests/indent/swift_spec.lua
Normal file
21
tests/indent/swift_spec.lua
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
local Runner = require("tests.indent.common").Runner
|
||||||
|
|
||||||
|
local run = Runner:new(it, "tests/indent/swift", {
|
||||||
|
tabstop = 2,
|
||||||
|
shiftwidth = 2,
|
||||||
|
softtabstop = 2,
|
||||||
|
expandtab = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("indent Swift:", function()
|
||||||
|
describe("whole file:", function()
|
||||||
|
run:whole_file(".", {})
|
||||||
|
end)
|
||||||
|
describe("new line:", function()
|
||||||
|
run:new_line("declarations.swift", { on_line = 6, text = "var x = 1", indent = 2 })
|
||||||
|
run:new_line("declarations.swift", { on_line = 12, text = "var textInsideInit = true", indent = 4 })
|
||||||
|
run:new_line("declarations.swift", { on_line = 17, text = "var textInsideWillSet = 1", indent = 6 })
|
||||||
|
run:new_line("declarations.swift", { on_line = 22, text = "var textInsideOverrideFunc", indent = 4 })
|
||||||
|
run:new_line("declarations.swift", { on_line = 28, text = "var InsideProtocol: String { get }", indent = 2 })
|
||||||
|
end)
|
||||||
|
end)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue