diff --git a/lua/nvim-yati/configs/python.lua b/lua/nvim-yati/configs/python.lua index 75c7871..bd9fe45 100644 --- a/lua/nvim-yati/configs/python.lua +++ b/lua/nvim-yati/configs/python.lua @@ -62,6 +62,7 @@ local config = { handlers = { on_initial = { ch.multiline_string_literal("string"), + ch.multiline_string_literal("string_content"), }, on_traverse = { ch.dedent_pattern("else", "identifier", "if_statement"), diff --git a/lua/nvim-yati/handlers/rust.lua b/lua/nvim-yati/handlers/rust.lua index ff022c5..a3c2170 100644 --- a/lua/nvim-yati/handlers/rust.lua +++ b/lua/nvim-yati/handlers/rust.lua @@ -4,7 +4,7 @@ local nt = utils.node_type local M = {} local function check_prev_field_closed(field_node, bufnr) - local lines = vim.treesitter.get_node_text(field_node, bufnr, { concat = false }) + local lines = vim.split(vim.treesitter.get_node_text(field_node, bufnr, {}), "\n") for i = #lines, 1, -1 do local first_char = vim.trim(lines[i]):sub(1, 1) -- skip previous chained field or empty line diff --git a/lua/nvim-yati/indent.lua b/lua/nvim-yati/indent.lua index b66c4ea..84233c7 100644 --- a/lua/nvim-yati/indent.lua +++ b/lua/nvim-yati/indent.lua @@ -138,7 +138,7 @@ function M.indentexpr(vlnum) end logger("START", "Line " .. vlnum) - local ok, indent = pcall(M.get_indent, vlnum - 1) + local ok, indent = xpcall(M.get_indent, debug.traceback, vlnum - 1) if ok then logger("END", "Total computed: " .. indent) return indent @@ -146,7 +146,11 @@ function M.indentexpr(vlnum) logger("END", "Error: " .. indent) vim.schedule(function() vim.notify_once( - string.format("[nvim-yati]: indent computation for line %s failed, consider submitting an issue for it", vlnum), + string.format( + "[nvim-yati]: indent computation for line %s failed, consider submitting an issue for it\n%s", + vlnum, + indent + ), vim.log.levels.WARN ) end) diff --git a/lua/nvim-yati/utils.lua b/lua/nvim-yati/utils.lua index 11f063f..7aa4672 100644 --- a/lua/nvim-yati/utils.lua +++ b/lua/nvim-yati/utils.lua @@ -1,9 +1,10 @@ local M = {} -local ts_parser = require("nvim-treesitter.parsers") ---@return LanguageTree function M.get_parser(bufnr) - return ts_parser.get_parser(bufnr) + local ft = vim.bo[bufnr].filetype + local lang = vim.treesitter.language.get_lang(ft) + return vim.treesitter.get_parser(bufnr, lang) end ---@return string