3 changed files with 100 additions and 1 deletions
@ -0,0 +1,54 @@ |
|||
-- Flatten allows you to open files from a neovim terminal buffer in your current neovim instance instead of a nested one:w |
|||
return { |
|||
'willothy/flatten.nvim', |
|||
opts = { |
|||
window = { open = 'alternate' }, |
|||
callbacks = { |
|||
should_block = function(argv) |
|||
-- Note that argv contains all the parts of the CLI command, including |
|||
-- Neovim's path, commands, options and files. |
|||
-- See: :help v:argv |
|||
|
|||
-- In this case, we would block if we find the `-b` flag |
|||
-- This allows you to use `nvim -b file1` instead of `nvim --cmd 'let g:flatten_wait=1' file1` |
|||
return vim.tbl_contains(argv, "-b") |
|||
|
|||
-- Alternatively, we can block if we find the diff-mode option |
|||
-- return vim.tbl_contains(argv, "-d") |
|||
end, |
|||
post_open = function(_bufnr, winnr, _ft, is_blocking) |
|||
if is_blocking then |
|||
require('toggleterm').toggle(0) |
|||
else |
|||
vim.api.nvim_set_current_win(winnr) |
|||
end |
|||
|
|||
-- If the file is a git commit, create one-shot autocmd to delete its buffer on write |
|||
-- If you just want the toggleable terminal integration, ignore this bit |
|||
if ft == "gitcommit" then |
|||
vim.api.nvim_create_autocmd( |
|||
"BufWritePost", |
|||
{ |
|||
buffer = bufnr, |
|||
once = true, |
|||
callback = function() |
|||
-- This is a bit of a hack, but if you run bufdelete immediately |
|||
-- the shell can occasionally freeze |
|||
vim.defer_fn( |
|||
function() |
|||
vim.api.nvim_buf_delete(bufnr, {}) |
|||
end, |
|||
50 |
|||
) |
|||
end |
|||
} |
|||
) |
|||
end |
|||
end, |
|||
block_end = function() |
|||
-- After blocking ends (for a git commit, etc), reopen the terminal |
|||
require("toggleterm").toggle(0) |
|||
end |
|||
}, |
|||
}, |
|||
} |
|||
@ -0,0 +1,45 @@ |
|||
return { |
|||
'akinsho/toggleterm.nvim', |
|||
version = "*", |
|||
lazy = false, |
|||
priority = 1001, |
|||
opts = { |
|||
open_mapping = [[<c-\>]], |
|||
direction = 'float', |
|||
shade_terminals = true, |
|||
float_opts = { |
|||
border = "curved", |
|||
} |
|||
}, |
|||
keys = { |
|||
{ "<esc>", [[<c-\><c-n>]], mode = 't', desc = "Enter free movement" }, |
|||
--{ "jk", [[<C-\><C-n>]], mode = 't', desc = "" }, |
|||
{ "<C-h>", [[<Cmd>wincmd h<CR>]], mode = 't', desc = "Leave"} , |
|||
{ "<C-j>", [[<Cmd>wincmd j<CR>]], mode = 't', desc = "Leave" }, |
|||
{ "<C-k>", [[<Cmd>wincmd k<CR>]], mode = 't', desc = "Leave" }, |
|||
{ "<C-l>", [[<Cmd>wincmd l<CR>]], mode = 't', desc = "Leave" }, |
|||
{ "<C-w>", [[<C-\><C-n><C-w>]], mode = 't', desc = "Leave" }, |
|||
}, |
|||
config = function(_, opts) |
|||
require('toggleterm').setup(opts) |
|||
-- |
|||
local Terminal = require('toggleterm.terminal').Terminal |
|||
|
|||
local htop = Terminal:new({ cmd = "htop", direction = "horizontal", hidden = true }) |
|||
function _htop_toggle() |
|||
htop:toggle() |
|||
end |
|||
|
|||
local lazygit = Terminal:new({ cmd = "lazygit", dir = "git_dir", hidden = true }) |
|||
function _lazygit_toggle() |
|||
lazygit:toggle() |
|||
end |
|||
|
|||
vim.api.nvim_set_keymap("n", "<leader>tf", "<cmd>ToggleTerm direction=float<CR>", { desc = "Toggle floating terminal", noremap = true, silent = true }) |
|||
vim.api.nvim_set_keymap("n", "<leader>th", "<cmd>ToggleTerm direction=horizontal size=10<CR>", { desc = "Toggle horizontal terminal", noremap = true, silent = true }) |
|||
vim.api.nvim_set_keymap("n", "<leader>tv", "<cmd>ToggleTerm direction=vertical size=80<CR>", { desc = "Toggle vertical terminal", noremap = true, silent = true }) |
|||
|
|||
vim.api.nvim_set_keymap("n", "<leader>tg", "<cmd>lua _lazygit_toggle()<CR>", {noremap = true, silent = true}) |
|||
vim.api.nvim_set_keymap("n", "<leader>tt", "<cmd>lua _htop_toggle()<CR>", {noremap = true, silent = true}) |
|||
end, |
|||
} |
|||
Loading…
Reference in new issue