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:
João Paulo Dubas 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

@ -183,7 +183,7 @@ COPY ./patch/kickstart.nvim/updates.patch /tmp
COPY ./config/nvim/lua/custom/plugins/init.lua /tmp COPY ./config/nvim/lua/custom/plugins/init.lua /tmp
RUN git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME}"/nvim \ RUN git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME}"/nvim \
&& cd ${XDG_CONFIG_HOME}/nvim \ && cd ${XDG_CONFIG_HOME}/nvim \
&& git reset --hard 186018483039b20dc39d7991e4fb28090dd4750e \ && git reset --hard 7201dc480134f41dd1be1f8f9b8f8470aac82a3b \
&& git apply /tmp/updates.patch \ && git apply /tmp/updates.patch \
&& cp /tmp/init.lua ${XDG_CONFIG_HOME}/nvim/lua/custom/plugins \ && cp /tmp/init.lua ${XDG_CONFIG_HOME}/nvim/lua/custom/plugins \
&& nvim --headless "+Lazy! sync" +qa && nvim --headless "+Lazy! sync" +qa

View File

@ -104,82 +104,19 @@ return {
priority = 1000, priority = 1000,
config = true, 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', 'EvWilson/slimux.nvim',
opts = { lazy = true,
size = vim.o.lines * 0.75, opts = function()
open_mapping = [[<c-\>]], local status_ok, slimux = pcall(require, 'slimux')
hide_numbers = true, if not status_ok then
shade_filetypes = {}, return {}
shade_terminals = true, end
shading_factor = 2, return {
direction = 'horizontal', target_socket = slimux.get_tmux_socket(),
shell = vim.o.shell, target_pane = string.format('%s.1', slimux.get_tmux_window()),
}, }
end,
keys = function() keys = function()
local status_ok, which_key = pcall(require, 'which-key') local status_ok, which_key = pcall(require, 'which-key')
if status_ok then if status_ok then
@ -187,38 +124,22 @@ return {
{ '<leader>m', group = 'Toggle ter[m]inal' }, { '<leader>m', group = 'Toggle ter[m]inal' },
} }
end end
vim.api.nvim_create_autocmd('TermOpen', { local slimux_status_ok, slimux = pcall(require, 'slimux')
group = vim.api.nvim_create_augroup('kickstart-custom-term-open-mapping', { clear = true }), if not slimux_status_ok then
callback = function(args) return {}
local bufnr = args.buf end
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,
})
return { return {
{ {
'<leader>mh', '<leader>xr',
'<cmd>ToggleTerm direction=horizontal size=' .. tostring(vim.o.lines * 0.75) .. '<cr>', slimux.send_highlighted_text,
desc = 'Open ter[m]inal [h]orizontally', mode = 'v',
noremap = true, desc = 'Send currently highlighted text to configured tmux pane',
}, },
{ {
'<leader>mv', '<leader>r',
'<cmd>ToggleTerm direction=vertical size=' .. tostring(vim.o.columns * 0.5) .. '<cr>', slimux.send_paragraph_text,
desc = 'Open ter[m]inal [v]ertically', mode = 'n',
noremap = true, desc = 'Send paragraph under cursor to configured tmux pane',
},
{
'<leader>mc',
'<cmd>ToggleTermSendCurrentLine<cr>',
desc = 'Send [c]urrent line under the cursor',
noremap = true,
}, },
} }
end, end,

View File

@ -1,5 +1,5 @@
diff --git a/init.lua b/init.lua diff --git a/init.lua b/init.lua
index 220d304..62a9702 100644 index ea86b79..93250ab 100644
--- a/init.lua --- a/init.lua
+++ b/init.lua +++ b/init.lua
@@ -91,7 +91,7 @@ vim.g.mapleader = ' ' @@ -91,7 +91,7 @@ vim.g.mapleader = ' '
@ -39,8 +39,8 @@ index 220d304..62a9702 100644
-- [[ Basic Keymaps ]] -- [[ Basic Keymaps ]]
-- See `:help vim.keymap.set()` -- See `:help vim.keymap.set()`
@@ -582,6 +590,28 @@ require('lazy').setup({ @@ -618,6 +626,28 @@ require('lazy').setup({
-- tsserver = {}, -- ts_ls = {},
-- --
+ cuelsp = {}, + cuelsp = {},
@ -68,7 +68,7 @@ index 220d304..62a9702 100644
lua_ls = { lua_ls = {
-- cmd = {...}, -- cmd = {...},
-- filetypes = { ...}, -- filetypes = { ...},
@@ -596,6 +626,33 @@ require('lazy').setup({ @@ -632,6 +662,33 @@ require('lazy').setup({
}, },
}, },
}, },
@ -76,7 +76,7 @@ index 220d304..62a9702 100644
+ r_language_server = {}, + r_language_server = {},
+ templ = {}, + templ = {},
+ terraformls = {}, + terraformls = {},
+ tsserver = {}, + ts_ls = {},
+ yamlls = { + yamlls = {
+ settings = { + settings = {
+ yaml = { + yaml = {
@ -102,9 +102,9 @@ index 220d304..62a9702 100644
} }
-- Ensure the servers and tools above are installed -- Ensure the servers and tools above are installed
@@ -622,6 +679,33 @@ require('lazy').setup({ @@ -658,6 +715,33 @@ require('lazy').setup({
-- by the server configuration above. Useful when disabling -- by the server configuration above. Useful when disabling
-- certain features of an LSP (for example, turning off formatting for tsserver) -- certain features of an LSP (for example, turning off formatting for ts_ls)
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {}) server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
+ -- overwrite elixirls for older versions of elixir + -- overwrite elixirls for older versions of elixir
+ -- * elixir 1.11 use version 0.12.0 + -- * elixir 1.11 use version 0.12.0
@ -136,9 +136,9 @@ index 220d304..62a9702 100644
require('lspconfig')[server_name].setup(server) require('lspconfig')[server_name].setup(server)
end, end,
}, },
@@ -844,7 +928,39 @@ require('lazy').setup({ @@ -888,7 +972,39 @@ require('lazy').setup({
'nvim-treesitter/nvim-treesitter', main = 'nvim-treesitter.configs', -- Sets main module to use for opts
build = ':TSUpdate', -- [[ Configure Treesitter ]] See `:help nvim-treesitter`
opts = { opts = {
- ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }, - ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' },
+ ensure_installed = { + ensure_installed = {
@ -177,7 +177,7 @@ index 220d304..62a9702 100644
-- Autoinstall languages that are not installed -- Autoinstall languages that are not installed
auto_install = true, auto_install = true,
highlight = { highlight = {
@@ -881,18 +997,18 @@ require('lazy').setup({ @@ -918,18 +1034,18 @@ require('lazy').setup({
-- Uncomment any of the lines below to enable them (you will need to restart nvim). -- Uncomment any of the lines below to enable them (you will need to restart nvim).
-- --
-- require 'kickstart.plugins.debug', -- require 'kickstart.plugins.debug',