Neovim sign gutter, designed to be mostly VCS agnostic
1local M = {}
2
3local hunkops = require "vcsigns.hunkops"
4local state = require "vcsigns.state"
5
6function M.select_hunk(bufnr)
7 local lnum = vim.fn.line "."
8 local hunks = state.get(bufnr).diff.hunks
9 local hunk = hunkops.cur_hunk(lnum, hunks)
10 if not hunk then
11 vim.notify(
12 "No hunk under cursor",
13 vim.log.levels.WARN,
14 { title = "VCSigns" }
15 )
16 return
17 end
18 if hunk.plus_count == 0 then
19 vim.notify(
20 "No lines in this hunk",
21 vim.log.levels.WARN,
22 { title = "VCSigns" }
23 )
24 return
25 end
26 local start = hunk.plus_start
27 local finish = start + hunk.plus_count - 1
28 vim.cmd(string.format("normal! %dG%d|V%dG", start, start, finish))
29end
30
31return M