diff options
| author | srdusr <trevorgray@srdusr.com> | 2025-09-24 02:56:53 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2025-09-24 02:56:53 +0200 |
| commit | 0f6cee92221dc517bd756083e260dd9373851b82 (patch) | |
| tree | c6d929fa5832d17a2d1fe3c85744bae7621ed447 /common/nvim/lua/plugins/toggleterm.lua | |
| parent | 3cf613ec7c90ab4933728b0f19e49b0c955c17bb (diff) | |
| download | dotfiles-0f6cee92221dc517bd756083e260dd9373851b82.tar.gz dotfiles-0f6cee92221dc517bd756083e260dd9373851b82.zip | |
Moved files to common/
Diffstat (limited to 'common/nvim/lua/plugins/toggleterm.lua')
| -rwxr-xr-x | common/nvim/lua/plugins/toggleterm.lua | 294 |
1 files changed, 0 insertions, 294 deletions
diff --git a/common/nvim/lua/plugins/toggleterm.lua b/common/nvim/lua/plugins/toggleterm.lua deleted file mode 100755 index 6b7aad5..0000000 --- a/common/nvim/lua/plugins/toggleterm.lua +++ /dev/null @@ -1,294 +0,0 @@ -local M = {} - ---- Setup and configure toggleterm.nvim --- This function initializes and configures the toggleterm plugin for terminal management --- @return boolean True if setup was successful, false otherwise -function M.setup() - local ok, toggleterm = pcall(require, 'toggleterm') - if not ok or not toggleterm then - return false - end - - toggleterm.setup({ - --open_mapping = [[<leader>tt]], - autochdir = true, - hide_numbers = true, - shade_filetypes = {}, - shade_terminals = false, - --shading_factor = 1, - start_in_insert = true, - insert_mappings = true, - terminal_mappings = true, - persist_size = true, - direction = 'float', - --direction = "vertical", - --direction = "horizontal", - close_on_exit = true, - shell = vim.o.shell, - highlights = { - -- highlights which map to a highlight group name and a table of it's values - -- NOTE: this is only a subset of values, any group placed here will be set for the terminal window split - --Normal = { - -- background = "#000000", - --}, - --Normal = { guibg = 'Black', guifg = 'White' }, - --FloatBorder = { guibg = 'Black', guifg = 'DarkGray' }, - --NormalFloat = { guibg = 'Black' }, - float_opts = { - --winblend = 3, - }, - }, - size = function(term) - if term.direction == 'horizontal' then - return 7 - elseif term.direction == 'vertical' then - return math.floor(vim.o.columns * 0.4) - end - end, - float_opts = { - width = 70, - height = 15, - border = 'curved', - highlights = { - border = 'Normal', - --background = 'Normal', - }, - --winblend = 0, - }, - }) - - -- Set up keymaps for toggleterm - local Terminal = require('toggleterm.terminal').Terminal - - -- Custom terminal commands - local lazygit - if not Terminal then return end - local term = Terminal:new({ - cmd = 'lazygit', - dir = 'git_dir', - direction = 'float', - float_opts = { - border = 'curved', - }, - 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, - }) - if term then - lazygit = term - end - - -- Toggle functions - local function _lazygit_toggle() - if not Terminal then return end - if not lazygit then - init_lazygit() - end - if lazygit then - pcall(lazygit.toggle, lazygit) - end - end - - -- Set up keymaps - vim.keymap.set('n', '<leader>tt', '<cmd>ToggleTerm<CR>', {noremap = true, silent = true, desc = 'Toggle Terminal'}) - vim.keymap.set('n', '<leader>tf', '<cmd>ToggleTerm direction=float<CR>', {noremap = true, silent = true, desc = 'Toggle Float Terminal'}) - vim.keymap.set('n', '<leader>th', '<cmd>ToggleTerm size=10 direction=horizontal<CR>', {noremap = true, silent = true, desc = 'Toggle Horizontal Terminal'}) - vim.keymap.set('n', '<leader>tv', '<cmd>ToggleTerm size=80 direction=vertical<CR>', {noremap = true, silent = true, desc = 'Toggle Vertical Terminal'}) - vim.keymap.set('n', '<leader>tl', _lazygit_toggle, {noremap = true, silent = true, desc = 'Toggle Lazygit'}) - - -- Terminal mode mappings - vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], {noremap = true, silent = true}) - vim.keymap.set('t', 'jk', [[<C-\><C-n>]], {noremap = true, silent = true}) - vim.keymap.set('t', '<C-h>', [[<Cmd>wincmd h<CR>]], {noremap = true, silent = true}) - vim.keymap.set('t', '<C-j>', [[<Cmd>wincmd j<CR>]], {noremap = true, silent = true}) - vim.keymap.set('t', '<C-k>', [[<Cmd>wincmd k<CR>]], {noremap = true, silent = true}) - vim.keymap.set('t', '<C-l>', [[<Cmd>wincmd l<CR>]], {noremap = true, silent = true}) - - return true -end - --- Terminal utility functions -local mods = {} - --- Simple empty check function if mods.empty is not available -function mods.empty(v) - return v == nil or v == '' -end -local float_handler = function(term) - if not mods.empty(vim.fn.mapcheck('jk', 't')) then - vim.keymap.del('t', 'jk', { buffer = term.bufnr }) - vim.keymap.del('t', '<esc>', { buffer = term.bufnr }) - end -end - -function _G.set_terminal_keymaps() - local opts = { noremap = true } - --local opts = {buffer = 0} - --vim.api.nvim_buf_set_keymap(0, "i", ";to", "[[<Esc>]]<cmd>Toggleterm", opts) - vim.api.nvim_buf_set_keymap(0, 't', '<C-c>', [[<Esc>]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '<esc>', [[<C-\><C-n>]], opts) - vim.api.nvim_buf_set_keymap(0, 't', 'jk', [[<C-\><C-n>]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '<C-h>', [[<C-\><C-n><C-W>h]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '<C-j>', [[<C-\><C-n><C-W>j]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '<C-k>', [[<C-\><C-n><C-W>k]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '<C-l>', [[<C-\><C-n><C-W>l]], opts) -end - --- if you only want these mappings for toggle term use term://*toggleterm#* instead -vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()') -local Terminal -local horizontal_term, vertical_term - --- Safely require toggleterm.terminal -local toggleterm_ok, toggleterm = pcall(require, 'toggleterm.terminal') -if toggleterm_ok and toggleterm and toggleterm.Terminal then - Terminal = toggleterm.Terminal - -- Initialize terminals only if Terminal is available - if Terminal then - local ok1, hterm = pcall(Terminal.new, Terminal, { hidden = true, direction = 'horizontal' }) - local ok2, vterm = pcall(Terminal.new, Terminal, { hidden = true, direction = 'vertical' }) - if ok1 then horizontal_term = hterm end - if ok2 then vertical_term = vterm end - end -end - -function Horizontal_term_toggle() - if horizontal_term then - pcall(horizontal_term.toggle, horizontal_term, 8, 'horizontal') - end -end - -function Vertical_term_toggle() - if vertical_term then - pcall(vertical_term.toggle, vertical_term, math.floor(vim.o.columns * 0.5), 'vertical') - end -end - --- Initialize lazygit terminal instance -local lazygit = nil -local Cur_cwd = vim.fn.getcwd() - --- Function to initialize lazygit terminal -local function init_lazygit() - if not Terminal then return nil end - if not lazygit then - local ok, term = pcall(function() - return Terminal:new({ - cmd = 'lazygit', - count = 5, - id = 1000, - dir = 'git_dir', - direction = 'float', - on_open = float_handler, - hidden = true, - float_opts = { - border = { '╒', '═', '╕', '│', '╛', '═', '╘', '│' }, - width = 150, - height = 40, - }, - }) - end) - if ok and term then - lazygit = term - end - end - return lazygit -end - --- Initialize lazygit on first use -function Lazygit_toggle() - -- Initialize lazygit if not already done - if not init_lazygit() then return end - - -- cwd is the root of project. if cwd is changed, change the git. - local cwd = vim.fn.getcwd() - if cwd ~= Cur_cwd then - Cur_cwd = cwd - if lazygit then - lazygit:close() - end - lazygit = Terminal:new({ - cmd = "zsh --login -c 'lazygit'", - dir = 'git_dir', - direction = 'float', - hidden = true, - on_open = float_handler, - float_opts = { - border = { '╒', '═', '╕', '│', '╛', '═', '╘', '│' }, - width = 150, - height = 40, - }, - }) - end - if lazygit then - lazygit:toggle() - else - vim.notify("Failed to initialize lazygit terminal", vim.log.levels.ERROR) - end -end - -local node = nil -local ncdu = nil - --- Initialize node terminal if Terminal is available -if Terminal then - local ok1, nterm = pcall(function() return Terminal:new({ cmd = 'node', hidden = true }) end) - local ok2, ncduterm = pcall(function() return Terminal:new({ cmd = 'ncdu', hidden = true }) end) - if ok1 then node = nterm end - if ok2 then ncdu = ncduterm end -end - -function _NODE_TOGGLE() - if not node then return end - pcall(node.toggle, node) -end - -function _NCDU_TOGGLE() - if not ncdu then return end - pcall(ncdu.toggle, ncdu) -end - -local htop = nil - -function _HTOP_TOGGLE() - if not Terminal then return end - if not htop then - local ok, term = pcall(function() return Terminal:new({ cmd = 'htop', hidden = true }) end) - if ok then htop = term end - end - if htop then - pcall(htop.toggle, htop) - end -end - -local python = nil - -function _PYTHON_TOGGLE() - if not Terminal then return end - if not python then - local ok, term = pcall(function() return Terminal:new({ cmd = 'python', hidden = true }) end) - if ok then python = term end - end - if python then - pcall(python.toggle, python) - end -end - -function Gh_dash() - Terminal:new({ - cmd = 'gh dash', - hidden = true, - direction = 'float', - on_open = float_handler, - float_opts = { - height = function() - return math.floor(vim.o.lines * 0.8) - end, - width = function() - return math.floor(vim.o.columns * 0.95) - end, - }, - }) - Gh_dash:toggle() -end |
