This commit is contained in:
Pham Huy Hoang 2023-04-03 23:47:41 +09:00 committed by Stephan Seitz
parent 1c7ba3ffcf
commit 474c59dcf1
4 changed files with 37 additions and 2 deletions

View file

@ -138,15 +138,15 @@ function M.get_indent(lnum)
-- The final node we capture of the previous line can be a comment node, which should also be ignored
-- Unless the last line is an entire line of comment, ignore the comment range and find the last node again
local first_node = get_first_node_at_line(root, prevlnum, indent)
local _, scol, _, _ = node:range()
if first_node:id() ~= node:id() then
-- In case the last captured node is a trailing comment node, re-trim the string
prevline = vim.trim(prevline:sub(1, node:start() + 1 - indent))
prevline = vim.trim(prevline:sub(1, scol - indent))
-- Add back indent as indent of prevline was trimmed away
local col = indent + #prevline - 1
node = get_last_node_at_line(root, prevlnum, col)
end
end
if q.indent["end"][node:id()] then
node = get_first_node_at_line(root, lnum)
end

View file

@ -0,0 +1,6 @@
class x: # Ignore comment
class y:
def z(): # Ignore comment
class t:

View file

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<body>
<!-- This file deliberately contains trailing whitespace -->
<!-- Don't remove them -->
<div>
a
</div>
</body>
</html>

View file

@ -0,0 +1,18 @@
local Runner = require("tests.indent.common").Runner
-- local XFAIL = require("tests.indent.common").XFAIL
local runner = Runner:new(it, "tests/indent/algorithm", {
tabstop = 4,
shiftwidth = 4,
softtabstop = 4,
expandtab = true,
})
describe("test indent algorithm: ", function()
describe("new line:", function()
runner:new_line("trailing.py", { on_line = 1, text = "x: str", indent = 4 }, "indent next line, ignore comment")
runner:new_line("trailing.py", { on_line = 4, text = "pass", indent = 8 }, "indent next line, ignore comment")
runner:new_line("trailing.py", { on_line = 6, text = "pass", indent = 4 }, "indent next line, ignore whitespace")
runner:new_line("trailing_whitespace.html", { on_line = 9, text = "x", indent = 8 }, "not ignore @indent.end")
end)
end)