From b7b150dcadac0757ffffba7ddbeab43ef0533881 Mon Sep 17 00:00:00 2001 From: opalmay Date: Mon, 6 Mar 2023 19:35:57 +0200 Subject: rebase --- lua/lvim/core/terminal.lua | 83 ++++++++++++++++++++++++--------------------- lua/lvim/core/which-key.lua | 1 - 2 files changed, 44 insertions(+), 40 deletions(-) diff --git a/lua/lvim/core/terminal.lua b/lua/lvim/core/terminal.lua index 6e0cb582..c37d9272 100644 --- a/lua/lvim/core/terminal.lua +++ b/lua/lvim/core/terminal.lua @@ -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, "", "Horizontal Terminal", "horizontal", 0.3 }, - { nil, "", "Vertical Terminal", "vertical", 0.4 }, - { nil, "", "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 = "", direction = "horizontal" }, + { keymap = "", direction = "vertical" }, + { keymap = "", direction = "float" }, + { keymap = "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 diff --git a/lua/lvim/core/which-key.lua b/lua/lvim/core/which-key.lua index 2ab47b05..e1f2ed4f 100644 --- a/lua/lvim/core/which-key.lua +++ b/lua/lvim/core/which-key.lua @@ -180,7 +180,6 @@ M.config = function() -- " Debugging g = { name = "Git", - g = { "lua require 'lvim.core.terminal'.lazygit_toggle()", "Lazygit" }, j = { "lua require 'gitsigns'.next_hunk({navigation_message = false})", "Next Hunk" }, k = { "lua require 'gitsigns'.prev_hunk({navigation_message = false})", "Prev Hunk" }, l = { "lua require 'gitsigns'.blame_line()", "Blame" }, -- cgit v1.2.3