aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/home/.config/nvim/lua/config/utils.lua
diff options
context:
space:
mode:
Diffstat (limited to 'home/.config/nvim/lua/config/utils.lua')
-rw-r--r--home/.config/nvim/lua/config/utils.lua29
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