Also integrate with my custom setup using tmux window options to communicate between nvim and tmux for which panes contain nvim processes.
36 lines
1.2 KiB
Lua
36 lines
1.2 KiB
Lua
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', "<C-h>", plugin.NvimTmuxNavigateLeft)
|
|
vim.keymap.set('n', "<C-j>", plugin.NvimTmuxNavigateDown)
|
|
vim.keymap.set('n', "<C-k>", plugin.NvimTmuxNavigateUp)
|
|
vim.keymap.set('n', "<C-l>", plugin.NvimTmuxNavigateRight)
|
|
end
|
|
}
|