aboutsummaryrefslogtreecommitdiff
path: root/nvim/lua/plugins/toggleterm.lua
blob: 902cf4b796c45106512a21e5e1fedfac1378e3ed (plain)
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>",
		{ 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 = true,
		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,
}