# HG changeset patch # User Meredith Howard # Date 1678491480 18000 # Node ID 91b42a87c3d92e16ea32199b1fb61ac2aabee88c # Parent 911aa9d81e711ed424bc79fe03ff8b947a7f3511 port tig plugin to lua diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -4,6 +4,7 @@ require("config.options") require("lazy-bootstrap") require("config.maps") require("config.lsp") +require("local.tig").setup() -- >> Builtin g.netrw_altfile = 1 diff --git a/.config/nvim/lua/local/tig.lua b/.config/nvim/lua/local/tig.lua new file mode 100644 --- /dev/null +++ b/.config/nvim/lua/local/tig.lua @@ -0,0 +1,37 @@ +local api = vim.api +local fn = vim.fn + +local function tig(ctx) + local cmd = ctx.fargs + local orig_number = vim.wo.number + + local buf = api.nvim_create_buf(false, true) + vim.bo[buf].bufhidden = "delete" + + api.nvim_set_current_buf(buf) + vim.wo.number = false + + table.insert(cmd, 1, "tig") + fn.termopen(cmd, { + on_exit = function() + vim.wo.number = orig_number + vim.cmd.buffer("#") + end, + }) +end + +local function setup(config) + api.nvim_create_user_command("Tig", tig, { nargs = "*", complete = "file" }) + + api.nvim_create_user_command("TigBlame", function() + tig({fargs = {"blame", "+" .. fn.line("."), "--", fn.expand("%")}}) + end, {}) + + api.nvim_create_user_command("TigLog", function() + tig({fargs = {"log", "-p", "--", fn.expand("%")}}) + end, {}) +end + +return { + setup = setup +} diff --git a/.config/nvim/plugin/tig.vim b/.config/nvim/plugin/tig.vim deleted file mode 100644 --- a/.config/nvim/plugin/tig.vim +++ /dev/null @@ -1,18 +0,0 @@ -func! tig#Tig(...) abort - enew - setl nonumber - call termopen(["tig"] + a:000, {'on_exit': 'tig#TigExit'}) -endfunc - -func! tig#TigBlame() abort - call tig#Tig('blame', '+' . line('.'), '--', expand('%')) -endfunc - -func! tig#TigExit(...) abort - buffer # -endfunc - -command! -nargs=* -complete=file Tig call tig#Tig() -command! TigBlame call tig#TigBlame() -command! TigLog call tig#Tig('log', '-p', '--', expand('%')) -