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 +}