From e09dc1346ce1397b59ddaf8049aad927015bd165 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Sat, 2 Mar 2024 17:39:06 +0000 Subject: [PATCH] Introduce nvim-tmux-navigator Also integrate with my custom setup using tmux window options to communicate between nvim and tmux for which panes contain nvim processes. --- lua/plugins/tmux.lua | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 lua/plugins/tmux.lua diff --git a/lua/plugins/tmux.lua b/lua/plugins/tmux.lua new file mode 100644 index 0000000..ad795d0 --- /dev/null +++ b/lua/plugins/tmux.lua @@ -0,0 +1,35 @@ +return { + "alexghergh/nvim-tmux-navigation", + config = function() + local plugin = require('nvim-tmux-navigation') + plugin.setup({ + disable_when_zoomed = true, + }) + + -- Integrate tmux navigation flag + local navigation_flag = + '@vim' .. vim.fn.substitute(vim.env.TMUX_PANE, '%', '\\%', 'g') + local function set_navigation_flag() + vim.fn.system('tmux set-window-option ' .. navigation_flag .. ' 1') + end + local function unset_navigation_flag() + vim.fn.system('tmux set-window-option -u ' .. navigation_flag) + end + + -- [Un]set tmux window option to detect when to change pane. + set_navigation_flag() + local augroup = vim.api.nvim_create_augroup('tmux', { clear = true }) + vim.api.nvim_create_autocmd('FocusGained', { + pattern = '*', group = augroup, callback = set_navigation_flag, + }) + vim.api.nvim_create_autocmd('VimLeave', { + pattern = '*', group = augroup, callback = unset_navigation_flag, + }) + + -- Map nativation bindings + vim.keymap.set('n', "", plugin.NvimTmuxNavigateLeft) + vim.keymap.set('n', "", plugin.NvimTmuxNavigateDown) + vim.keymap.set('n', "", plugin.NvimTmuxNavigateUp) + vim.keymap.set('n', "", plugin.NvimTmuxNavigateRight) + end +}