diff options
Diffstat (limited to 'home/.config/nvim/lua/config/utils.lua')
| -rw-r--r-- | home/.config/nvim/lua/config/utils.lua | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/home/.config/nvim/lua/config/utils.lua b/home/.config/nvim/lua/config/utils.lua new file mode 100644 index 0000000..300d7a7 --- /dev/null +++ b/home/.config/nvim/lua/config/utils.lua @@ -0,0 +1,29 @@ +local M = {} +local gitsigns = require("gitsigns") +local conform = require("conform") + +function M.format_hunks(options) + local hunks = gitsigns.get_hunks() + if not hunks or vim.tbl_isempty(hunks) then + return + end + for _, hunk in ipairs(hunks) do + if hunk and hunk.added then + local start = hunk.added.start + local last = start + hunk.added.count + -- nvim_buf_get_lines uses zero-based indexing -> subtract from last + local last_hunk_line = + vim.api.nvim_buf_get_lines(0, last - 2, last - 1, true)[1] + local range = + { start = { start, 0 }, ["end"] = { last - 1, last_hunk_line:len() } } + options = vim.tbl_extend( + "force", + { range = range, lsp_fallback = true, quiet = true }, + options or {} + ) + conform.format(options) + end + end +end + +return M |
