mirror of
https://github.com/chenasraf/nvim-treesitter.git
synced 2026-05-18 01:39:00 +00:00
fix(indents): indents for error block (css, lua) (#3207)
This commit is contained in:
@@ -149,12 +149,19 @@ function M.get_indent(lnum)
|
||||
end
|
||||
|
||||
-- do not indent for nodes that starts-and-ends on same line and starts on target line (lnum)
|
||||
local should_process = not is_processed_by_row[srow]
|
||||
local is_in_err = false
|
||||
if should_process then
|
||||
local parent = node:parent()
|
||||
is_in_err = parent and parent:has_error()
|
||||
end
|
||||
if
|
||||
not is_processed_by_row[srow]
|
||||
-- Dear stylua, please don't change the semantics of this statement!
|
||||
-- stylua: ignore start
|
||||
and (q.indent[node:id()] and srow ~= erow and ((srow ~= lnum - 1) or q.indent[node:id()].start_at_same_line))
|
||||
-- stylua: ignore end
|
||||
should_process
|
||||
and (
|
||||
q.indent[node:id()]
|
||||
and (srow ~= erow or is_in_err)
|
||||
and (srow ~= lnum - 1 or q.indent[node:id()].start_at_same_line)
|
||||
)
|
||||
then
|
||||
indent = indent + indent_size
|
||||
is_processed = true
|
||||
|
||||
@@ -3,9 +3,11 @@
|
||||
(function_declaration)
|
||||
(field)
|
||||
(do_statement)
|
||||
(method_index_expression)
|
||||
(while_statement)
|
||||
(repeat_statement)
|
||||
(if_statement)
|
||||
"then"
|
||||
(for_statement)
|
||||
(return_statement)
|
||||
(table_constructor)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
local Runner = require("tests.indent.common").Runner
|
||||
local XFAIL = require("tests.indent.common").XFAIL
|
||||
|
||||
local run = Runner:new(it, "tests/indent/css", {
|
||||
tabstop = 2,
|
||||
@@ -17,12 +16,7 @@ describe("indent CSS:", function()
|
||||
|
||||
describe("new line:", function()
|
||||
run:new_line("open_block.css", { on_line = 1, text = "}", indent = 0 })
|
||||
run:new_line(
|
||||
"open_block.css",
|
||||
{ on_line = 1, text = "color: green;", indent = 2 },
|
||||
"might fail because tree is in a broken state",
|
||||
XFAIL
|
||||
)
|
||||
run:new_line("open_block.css", { on_line = 1, text = "color: green;", indent = 2 })
|
||||
run:new_line("next_rule.css", { on_line = 3, text = ".next {", indent = 0 })
|
||||
end)
|
||||
end)
|
||||
|
||||
@@ -10,3 +10,5 @@ else
|
||||
end
|
||||
x = 0
|
||||
end
|
||||
|
||||
if x > 2 then
|
||||
|
||||
3
tests/indent/lua/method_index_expr.lua
Normal file
3
tests/indent/lua/method_index_expr.lua
Normal file
@@ -0,0 +1,3 @@
|
||||
Node.new()
|
||||
:call()
|
||||
:build()
|
||||
@@ -36,8 +36,12 @@ describe("indent Lua:", function()
|
||||
run:new_line("cond.lua", { on_line = 8, text = "x = x + 1", indent = 4 })
|
||||
run:new_line("cond.lua", { on_line = 10, text = "x = x + 1", indent = 2 })
|
||||
run:new_line("cond.lua", { on_line = 12, text = "x = x + 1", indent = 0 })
|
||||
run:new_line("cond.lua", { on_line = 14, text = "x = x + 1", indent = 2 })
|
||||
run:new_line("cond.lua", { on_line = 14, text = "end", indent = 0 })
|
||||
run:new_line("no-indent-after-paren-pairs.lua", { on_line = 3, text = "x = x + 1", indent = 0 })
|
||||
run:new_line("no-indent-after-paren-pairs.lua", { on_line = 6, text = "x = x + 1", indent = 0 })
|
||||
run:new_line("nested-table.lua", { on_line = 5, text = "{}", indent = 4 })
|
||||
run:new_line("method_index_expr.lua", { on_line = 1, text = ":test()", indent = 2 })
|
||||
run:new_line("method_index_expr.lua", { on_line = 3, text = "local a = 1", indent = 0 })
|
||||
end)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user