1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
local init = function()
local keymap = vim.keymap
keymap.set("n", "<C-t>", ":ToggleTerm<Enter>:startinsert<Enter>",
{ noremap = true, silent = true, desc = "Terminal (ToggleTerm)" }) -- Terminal
keymap.set("t", "<C-t>", "<C-\\><C-n>:ToggleTerm<Enter>")
keymap.set("n", "<Space>g", ":ToggleLazyGit<Enter>",
{ noremap = true, silent = true, desc = "LazyGit (ToggleTerm)" }) -- LazyGit
end
local config = function()
require("toggleterm").setup {
autochdir = false,
direction = "float",
-- open_mapping = [[<c-t>]],
-- terminal_mappings = true,
start_in_insert = false,
float_opts = {
border = "curved",
},
on_open = function(term)
local cwd = vim.fn.getcwd()
if term.dir ~= cwd then
term:send("cd " .. cwd .. " && clear")
term.dir = cwd
end
end,
}
local Terminal = require("toggleterm.terminal").Terminal
local opts = {
noremap = true, -- non-recursive
silent = true, -- do not show message
}
-- LazyGit
local lazygit = Terminal:new({
cmd = "lazygit",
dir = "git_dir",
direction = "float",
float_opts = {
border = "curved",
},
-- function to run on opening the terminal
on_open = function(term)
vim.cmd("startinsert!")
vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", ":close<Enter>", opts)
end,
-- function to run on closing the terminal
on_close = function()
vim.cmd("startinsert!")
end,
})
local function toggle_lazygit()
lazygit:toggle()
end
vim.api.nvim_create_user_command("ToggleLazyGit", toggle_lazygit, {})
end
return {
"akinsho/toggleterm.nvim",
lazy = true,
cmd = { "ToggleTerm", "ToggleLazyGit" },
init = init,
config = config,
}
|