|  | @@ -35,15 +35,19 @@ M.config = function()
 | 
	
		
			
				|  |  |          background = "Normal",
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    -- Add executables on the config.lua
 | 
	
		
			
				|  |  | -    -- { cmd, keymap, description, direction, size }
 | 
	
		
			
				|  |  | -    -- lvim.builtin.terminal.execs = {...} to overwrite
 | 
	
		
			
				|  |  | -    -- lvim.builtin.terminal.execs[#lvim.builtin.terminal.execs+1] = {"gdb", "tg", "GNU Debugger"}
 | 
	
		
			
				|  |  | -    -- TODO: pls add mappings in which key and refactor this
 | 
	
		
			
				|  |  |      execs = {
 | 
	
		
			
				|  |  | -      { nil, "<M-1>", "Horizontal Terminal", "horizontal", 0.3 },
 | 
	
		
			
				|  |  | -      { nil, "<M-2>", "Vertical Terminal", "vertical", 0.4 },
 | 
	
		
			
				|  |  | -      { nil, "<M-3>", "Float Terminal", "float", nil },
 | 
	
		
			
				|  |  | +      defaults = {
 | 
	
		
			
				|  |  | +        -- default shell already set in toggleterm opts
 | 
	
		
			
				|  |  | +        -- size = 1 for full screen
 | 
	
		
			
				|  |  | +        direction = "horizontal",
 | 
	
		
			
				|  |  | +        horizontal_size = 0.3,
 | 
	
		
			
				|  |  | +        vertical_size = 0.4,
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      -- builtin, cmd defaults to shell
 | 
	
		
			
				|  |  | +      { keymap = "<M-1>", direction = "horizontal" },
 | 
	
		
			
				|  |  | +      { keymap = "<M-2>", direction = "vertical" },
 | 
	
		
			
				|  |  | +      { keymap = "<M-3>", direction = "float" },
 | 
	
		
			
				|  |  | +      { keymap = "<leader>gg", cmd = "lazygit", size = 1 },
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  end
 | 
	
	
		
			
				|  | @@ -78,19 +82,31 @@ local function get_dynamic_terminal_size(direction, size)
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  M.init = function()
 | 
	
		
			
				|  |  | -  for i, exec in pairs(lvim.builtin.terminal.execs) do
 | 
	
		
			
				|  |  | -    local direction = exec[4] or lvim.builtin.terminal.direction
 | 
	
		
			
				|  |  | +  for i, exec in ipairs(lvim.builtin.terminal.execs) do
 | 
	
		
			
				|  |  | +    if exec.size == 1 then
 | 
	
		
			
				|  |  | +      exec.direction = "float"
 | 
	
		
			
				|  |  | +    end
 | 
	
		
			
				|  |  | +    local direction = exec.direction or lvim.builtin.terminal.execs.defaults.direction
 | 
	
		
			
				|  |  | +    local size = exec.size or lvim.builtin.terminal.execs.defaults[direction .. "_size"]
 | 
	
		
			
				|  |  | +    size = get_dynamic_terminal_size(direction, size)
 | 
	
		
			
				|  |  | +    local cmd = exec.cmd or lvim.builtin.terminal.shell
 | 
	
		
			
				|  |  | +    local desc = exec.desc
 | 
	
		
			
				|  |  | +    if desc == nil then
 | 
	
		
			
				|  |  | +      if exec.cmd == nil then
 | 
	
		
			
				|  |  | +        desc = "Toggle Terminal(" .. exec.direction .. ")"
 | 
	
		
			
				|  |  | +      else
 | 
	
		
			
				|  |  | +        desc = exec.cmd
 | 
	
		
			
				|  |  | +      end
 | 
	
		
			
				|  |  | +    end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      local opts = {
 | 
	
		
			
				|  |  | -      cmd = exec[1] or lvim.builtin.terminal.shell or vim.o.shell,
 | 
	
		
			
				|  |  | -      keymap = exec[2],
 | 
	
		
			
				|  |  | -      label = exec[3],
 | 
	
		
			
				|  |  | +      cmd = cmd,
 | 
	
		
			
				|  |  | +      keymap = exec.keymap,
 | 
	
		
			
				|  |  | +      desc = desc,
 | 
	
		
			
				|  |  |        -- NOTE: unable to consistently bind id/count <= 9, see #2146
 | 
	
		
			
				|  |  |        count = i + 100,
 | 
	
		
			
				|  |  |        direction = direction,
 | 
	
		
			
				|  |  | -      size = function()
 | 
	
		
			
				|  |  | -        return get_dynamic_terminal_size(direction, exec[5])
 | 
	
		
			
				|  |  | -      end,
 | 
	
		
			
				|  |  | +      size = size,
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      M.add_exec(opts)
 | 
	
	
		
			
				|  | @@ -113,13 +129,22 @@ M.add_exec = function(opts)
 | 
	
		
			
				|  |  |    end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    vim.keymap.set({ "n", "t" }, opts.keymap, function()
 | 
	
		
			
				|  |  | -    M._exec_toggle { cmd = opts.cmd, count = opts.count, direction = opts.direction, size = opts.size() }
 | 
	
		
			
				|  |  | -  end, { desc = opts.label, noremap = true, silent = true })
 | 
	
		
			
				|  |  | +    M._exec_toggle { cmd = opts.cmd, count = opts.count, direction = opts.direction, size = opts.size }
 | 
	
		
			
				|  |  | +  end, { desc = opts.desc, noremap = true, silent = true })
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  M._exec_toggle = function(opts)
 | 
	
		
			
				|  |  |    local Terminal = require("toggleterm.terminal").Terminal
 | 
	
		
			
				|  |  | -  local term = Terminal:new { cmd = opts.cmd, count = opts.count, direction = opts.direction }
 | 
	
		
			
				|  |  | +  local term = Terminal:new {
 | 
	
		
			
				|  |  | +    cmd = opts.cmd,
 | 
	
		
			
				|  |  | +    count = opts.count,
 | 
	
		
			
				|  |  | +    direction = opts.direction,
 | 
	
		
			
				|  |  | +    float_opts = {
 | 
	
		
			
				|  |  | +      border = "none" and opts.size == 1,
 | 
	
		
			
				|  |  | +      width = opts.size == 1 and 100000,
 | 
	
		
			
				|  |  | +      height = opts.size == 1 and 100000,
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |    term:toggle(opts.size, opts.direction)
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -146,24 +171,4 @@ M.toggle_log_view = function(logfile)
 | 
	
		
			
				|  |  |    log_view:toggle()
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -M.lazygit_toggle = function()
 | 
	
		
			
				|  |  | -  local Terminal = require("toggleterm.terminal").Terminal
 | 
	
		
			
				|  |  | -  local lazygit = Terminal:new {
 | 
	
		
			
				|  |  | -    cmd = "lazygit",
 | 
	
		
			
				|  |  | -    hidden = true,
 | 
	
		
			
				|  |  | -    direction = "float",
 | 
	
		
			
				|  |  | -    float_opts = {
 | 
	
		
			
				|  |  | -      border = "none",
 | 
	
		
			
				|  |  | -      width = 100000,
 | 
	
		
			
				|  |  | -      height = 100000,
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  | -    on_open = function(_)
 | 
	
		
			
				|  |  | -      vim.cmd "startinsert!"
 | 
	
		
			
				|  |  | -    end,
 | 
	
		
			
				|  |  | -    on_close = function(_) end,
 | 
	
		
			
				|  |  | -    count = 99,
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  lazygit:toggle()
 | 
	
		
			
				|  |  | -end
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  return M
 |