feat(nvim): migrate from toggleterm to slimux (#73)

Instead of using the native terminal available in `neovim` and the [toggleterm][0] extension, I'm migrating to [slimux][1] and `tmux` to share commands between terminals.

Co-authored-by: Joao P Dubas <joao.dubas@gmail.com>
Reviewed-on: #73

[0]: https://github.com/akinsho/toggleterm.nvim
[1]: https://github.com/EvWilson/slimux.nvim
Co-authored-by: Joao P Dubas <joao.dubas+gitea@gmail.com>
Co-committed-by: Joao P Dubas <joao.dubas+gitea@gmail.com>
This commit is contained in:
2024-09-17 11:32:59 +00:00
committed by João Paulo Dubas
parent 9f362ad837
commit dcda21f824
3 changed files with 36 additions and 115 deletions

View File

@@ -104,82 +104,19 @@ return {
priority = 1000,
config = true,
},
-- {
-- 'rest-nvim/rest.nvim',
-- dependencies = { 'luarocks.nvim' },
-- ft = {
-- 'http',
-- 'rest',
-- },
-- config = function()
-- require('rest-nvim').setup {
-- client = 'curl',
-- custom_dynamic_variables = {},
-- encode_url = true,
-- env_file = '.env',
-- skip_ssl_verification = false,
-- highlight = {
-- enable = true,
-- timeout = 15,
-- },
-- result = {
-- behavior = {
-- decode_url = true,
-- formatters = {
-- json = 'jq',
-- html = false,
-- },
-- show_info = {
-- curl_command = true,
-- headers = true,
-- http_info = true,
-- url = true,
-- },
-- statistics = {
-- enable = true,
-- stats = {
-- { 'total_time', title = 'Time taken:' },
-- { 'size_download_t', title = 'Download size:' },
-- },
-- },
-- },
-- split = {
-- horizontal = false,
-- in_place = false,
-- },
-- },
-- }
-- end,
-- keys = function()
-- local status_ok, which_key = pcall(require, 'which-key')
-- if status_ok then
-- which_key.register {
-- ['<leader>t'] = { name = 'Res[t]', _ = 'which_key_ignore' },
-- }
-- end
-- return {
-- { '<leader>tr', '<cmd>Rest run<cr>', desc = 'Run the request under cursor' },
-- {
-- '<leader>tp',
-- '<Plug>RestNvimPreview',
-- desc = 'Preview the curl command for the request under cursor',
-- },
-- { '<leader>tl', '<cmd>Rest run last<cr>', desc = 'Re-run the last request' },
-- }
-- end,
-- },
{
'akinsho/toggleterm.nvim',
opts = {
size = vim.o.lines * 0.75,
open_mapping = [[<c-\>]],
hide_numbers = true,
shade_filetypes = {},
shade_terminals = true,
shading_factor = 2,
direction = 'horizontal',
shell = vim.o.shell,
},
'EvWilson/slimux.nvim',
lazy = true,
opts = function()
local status_ok, slimux = pcall(require, 'slimux')
if not status_ok then
return {}
end
return {
target_socket = slimux.get_tmux_socket(),
target_pane = string.format('%s.1', slimux.get_tmux_window()),
}
end,
keys = function()
local status_ok, which_key = pcall(require, 'which-key')
if status_ok then
@@ -187,38 +124,22 @@ return {
{ '<leader>m', group = 'Toggle ter[m]inal' },
}
end
vim.api.nvim_create_autocmd('TermOpen', {
group = vim.api.nvim_create_augroup('kickstart-custom-term-open-mapping', { clear = true }),
callback = function(args)
local bufnr = args.buf
local opts = { buffer = bufnr }
vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], opts)
vim.keymap.set('t', 'jk', [[<C-\><C-n>]], opts)
vim.keymap.set('t', '<C-h>', [[<cmd>wincmd h<cr>]], opts)
vim.keymap.set('t', '<C-j>', [[<cmd>wincmd j<cr>]], opts)
vim.keymap.set('t', '<C-k>', [[<cmd>wincmd k<cr>]], opts)
vim.keymap.set('t', '<C-l>', [[<cmd>wincmd l<cr>]], opts)
vim.keymap.set('t', '<C-w>', [[<C-\><C-n><C-w>]], opts)
end,
})
local slimux_status_ok, slimux = pcall(require, 'slimux')
if not slimux_status_ok then
return {}
end
return {
{
'<leader>mh',
'<cmd>ToggleTerm direction=horizontal size=' .. tostring(vim.o.lines * 0.75) .. '<cr>',
desc = 'Open ter[m]inal [h]orizontally',
noremap = true,
'<leader>xr',
slimux.send_highlighted_text,
mode = 'v',
desc = 'Send currently highlighted text to configured tmux pane',
},
{
'<leader>mv',
'<cmd>ToggleTerm direction=vertical size=' .. tostring(vim.o.columns * 0.5) .. '<cr>',
desc = 'Open ter[m]inal [v]ertically',
noremap = true,
},
{
'<leader>mc',
'<cmd>ToggleTermSendCurrentLine<cr>',
desc = 'Send [c]urrent line under the cursor',
noremap = true,
'<leader>r',
slimux.send_paragraph_text,
mode = 'n',
desc = 'Send paragraph under cursor to configured tmux pane',
},
}
end,