local status_ok, toggleterm = pcall(require, "toggleterm") if not status_ok then return end toggleterm.setup({ --open_mapping = [[tt]], autochdir = true, hide_numbers = true, shade_filetypes = {}, shade_terminals = true, 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 = 'DarkGray' }, FloatBorder = { guibg = 'Black', guifg = 'DarkGray' }, NormalFloat = { guibg = 'Black' }, --float_opts = { -- border = as.style.current.border, -- 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, winblend = 3, border = "curved", --winblend = 0, highlights = { border = "Normal", background = "Normal", }, }, }) local mods = require("user.mods") 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', '', { 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", "[[]]Toggleterm", opts) vim.api.nvim_buf_set_keymap(0, "t", "", [[]], opts) vim.api.nvim_buf_set_keymap(0, "t", "", [[]], opts) vim.api.nvim_buf_set_keymap(0, "t", "jk", [[]], opts) vim.api.nvim_buf_set_keymap(0, "t", "", [[h]], opts) vim.api.nvim_buf_set_keymap(0, "t", "", [[j]], opts) vim.api.nvim_buf_set_keymap(0, "t", "", [[k]], opts) vim.api.nvim_buf_set_keymap(0, "t", "", [[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 = require("toggleterm.terminal").Terminal local horizontal_term = Terminal:new({ hidden = true, direction = "horizontal" }) local vertical_term = Terminal:new({ hidden = true, direction = "vertical" }) function Horizontal_term_toggle() horizontal_term:toggle(8, "horizontal") end function Vertical_term_toggle() horizontal_term:toggle(math.floor(vim.o.columns * 0.5), "vertical") end local lazygit = 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 }, ---- Function to run on opening the terminal --on_open = function(term) -- vim.api.nvim_buf_set_keymap(term.bufnr, 'n', 'q', 'close', -- {noremap = true, silent = true}) -- vim.api.nvim_buf_set_keymap(term.bufnr, 'n', '', 'close', -- {noremap = true, silent = true}) -- vim.api.nvim_buf_set_keymap(term.bufnr, 'n', '', 'close', -- {noremap = true, silent = true}) --end, ---- Function to run on closing the terminal --on_close = function(term) -- vim.cmd("startinsert!") --end }) function Lazygit_toggle() -- 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 lazygit:close() 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 lazygit:toggle() end local node = Terminal:new({ cmd = "node", hidden = true }) function _NODE_TOGGLE() node:toggle() end local ncdu = Terminal:new({ cmd = "ncdu", hidden = true }) function _NCDU_TOGGLE() ncdu:toggle() end local htop = Terminal:new({ cmd = "htop", hidden = true }) function _HTOP_TOGGLE() htop:toggle() end local python = Terminal:new({ cmd = "python", hidden = true }) function _PYTHON_TOGGLE() python:toggle() 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