Files
nvim/lua/config/terminals.lua
T

90 lines
2.6 KiB
Lua

--- Terminal configurations using toggleterm
--- This module provides terminal toggle functions for various CLI tools
--- @module config.terminals
local M = {}
--- Check if toggleterm is available
--- @return boolean available Whether toggleterm is loaded
local function is_toggleterm_available()
local ok, _ = pcall(require, "toggleterm.terminal")
return ok
end
--- Initialize all terminal configurations
--- Only runs if toggleterm is available
function M.setup()
if not is_toggleterm_available() then
vim.notify("toggleterm not available, skipping terminal setup", vim.log.levels.WARN)
return
end
local Terminal = require("toggleterm.terminal").Terminal
-- Claude terminal configuration
local claude = Terminal:new({
cmd = "claude",
hidden = true,
direction = "tab",
close_on_exit = true,
on_open = function(term)
vim.cmd("startinsert!")
vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", "<cmd>close<CR>", { noremap = true, silent = true })
end,
})
-- Yazi file manager terminal
local yazi = Terminal:new({
cmd = "yazi",
hidden = true,
direction = "tab",
close_on_exit = true,
on_open = function(term)
vim.cmd("startinsert!")
vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", "<cmd>close<CR>", { noremap = true, silent = true })
end,
})
-- Scooter find and replace terminal
local scooter = Terminal:new({
cmd = "scooter",
hidden = true,
direction = "vertical",
on_open = function(term)
vim.cmd("startinsert!")
vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", "<cmd>close<CR>", { noremap = true, silent = true })
end,
})
-- Lazyjournal terminal
local lazyjournal = Terminal:new({
cmd = "lazyjournal",
hidden = true,
direction = "float",
on_open = function(term)
vim.cmd("startinsert!")
vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", "<cmd>close<CR>", { noremap = true, silent = true })
end,
})
-- Mk (make) terminal
local mk = Terminal:new({
cmd = "mk",
hidden = true,
direction = "vertical",
on_open = function(term)
vim.cmd("startinsert!")
vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", "<cmd>close<CR>", { noremap = true, silent = true })
end,
})
-- Export toggle functions to module instead of global namespace
M.claude_toggle = function() claude:toggle() end
M.yazi_toggle = function() yazi:toggle() end
M.scooter_toggle = function() scooter:toggle() end
M.lazyjournal_toggle = function() lazyjournal:toggle() end
M.mk_toggle = function() mk:toggle() end
end
return M