diff options
author | HampusM <hampus@hampusmat.com> | 2024-05-30 19:15:41 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2024-05-30 19:58:44 +0200 |
commit | a6123a6dd5ee3f7e63077cf72a40a1085cebada1 (patch) | |
tree | bfe00bca1b126c951a70fed2e37ceafa718ca185 | |
parent | 397231322ba179218eb89b2b9c6470387f99e221 (diff) |
make terminal resizing more robust
-rw-r--r-- | lua/config.lua | 1 | ||||
-rw-r--r-- | lua/functions.lua | 21 | ||||
-rw-r--r-- | lua/maps/terminal.lua | 4 |
3 files changed, 13 insertions, 13 deletions
diff --git a/lua/config.lua b/lua/config.lua index a6de657..919d711 100644 --- a/lua/config.lua +++ b/lua/config.lua @@ -62,7 +62,6 @@ vim.g.nerdtree_tabs_open_on_console_startup = 1 vim.g.NERDTreeWinSize = 40 -- Custom globals -vim.g.is_term_open = 0 vim.g.terminal_height = 12 vim.g.term_buf = 0 vim.g.term_win = 0 diff --git a/lua/functions.lua b/lua/functions.lua index 12eca3a..1f088a8 100644 --- a/lua/functions.lua +++ b/lua/functions.lua @@ -12,6 +12,14 @@ function table.filter(list, predicate) return filtered_list end +local function set_terminal_height(height) + if not vim.api.nvim_win_is_valid(vim.g.term_win) then + return + end + + vim.api.nvim_win_set_height(vim.g.term_win, height) +end + function _G.check_back_space() local col = vim.api.nvim_win_get_cursor(0)[2] @@ -32,14 +40,13 @@ function _G.show_documentation() end end -function _G.toggle_terminal(height) +function _G.toggle_terminal() if vim.fn.win_gotoid(vim.g.term_win) == 1 then - vim.g.is_term_open = 0 vim.cmd("quit!") else vim.cmd("botright new") - vim.cmd("resize " .. height) + vim.api.nvim_win_set_height(vim.fn.win_getid(), vim.g.terminal_height) if not pcall(function() vim.cmd("buffer " .. vim.g.term_buf) end) then vim.fn.termopen(vim.env.SHELL, {detach=0}) @@ -54,7 +61,6 @@ function _G.toggle_terminal(height) vim.cmd("startinsert!") vim.g.term_win = vim.fn.win_getid() - vim.g.is_term_open = 1 if vim.fn.exists("g:NERDTree") and vim.api.nvim_eval("g:NERDTree.IsOpen()") then vim.cmd("NERDTreeFocus") @@ -114,11 +120,6 @@ function _G.close_current_buffer() vim.api.nvim_buf_delete(current_buf_nr, { force = true }) - -- Resize terminal - if vim.g.is_term_open == 1 then - vim.cmd("wincmd j") - vim.cmd("resize " .. vim.g.terminal_height) - vim.cmd("wincmd k") - end + set_terminal_height(vim.g.terminal_height) end diff --git a/lua/maps/terminal.lua b/lua/maps/terminal.lua index c3dc804..a1cde60 100644 --- a/lua/maps/terminal.lua +++ b/lua/maps/terminal.lua @@ -1,14 +1,14 @@ vim.api.nvim_set_keymap( "n", "<leader>t", - ":lua toggle_terminal(vim.g.terminal_height)<CR>", + ":lua toggle_terminal()<CR>", {silent = true, noremap = true} ) vim.api.nvim_set_keymap( "t", "<leader>t", - "<C-\\><C-n>:lua toggle_terminal(vim.g.terminal_height)<CR>", + "<C-\\><C-n>:lua toggle_terminal()<CR>", {silent = true, noremap = true} ) |