Neovim sign gutter, designed to be mostly VCS agnostic
at experimental_diffthis 26 lines 690 B view raw
1local M = {} 2 3local fold = require "vclib.fold" 4local interval_lib = require "vclib.intervals" 5local hunkops = require "vcsigns.hunkops" 6local state = require "vcsigns.state" 7 8---@param lnum integer 9function M.fold_expression(lnum) 10 local bufnr = vim.api.nvim_get_current_buf() 11 local hunks = state.get(bufnr).diff.hunks 12 if hunks == nil then 13 return 0 14 end 15 local intervals = interval_lib.from_list(hunks, hunkops.to_interval) 16 fold.maybe_update_levels(intervals, vim.g.vcsigns_fold_context_sizes) 17 return vim.b.levels[lnum] or 0 18end 19 20local foldexpr = 'v:lua.require("vcsigns.fold").fold_expression(v:lnum)' 21 22function M.toggle(bufnr) 23 fold.toggle(bufnr, foldexpr) 24end 25 26return M