From 8dc67b83822d6a1a19aad584e80a104b549332d7 Mon Sep 17 00:00:00 2001 From: Cason Adams Date: Wed, 8 Mar 2023 22:57:23 -0700 Subject: [PATCH 1/3] add nvim side for zellij, waiting for zellij side [zellij #967](https://github.com/zellij-org/zellij/issues/967) --- README.md | 1 + lua/Navigator/mux/zellij.lua | 56 ++++++++++++++++++++++++++++++++++++ lua/Navigator/navigate.lua | 9 ++++++ 3 files changed, 66 insertions(+) create mode 100644 lua/Navigator/mux/zellij.lua diff --git a/README.md b/README.md index ff02745..9f04e86 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,7 @@ vim.keymap.set({'n', 't'}, '', 'NavigatorPrevious') - [Tmux](https://github.com/numToStr/Navigator.nvim/wiki/Tmux-Integration) - [WezTerm](https://github.com/numToStr/Navigator.nvim/wiki/WezTerm-Integration) +- [Zellij](https://github.com/numToStr/Navigator.nvim/wiki/Zellij-Integration) #### Configuration (optional) diff --git a/lua/Navigator/mux/zellij.lua b/lua/Navigator/mux/zellij.lua new file mode 100644 index 0000000..b640923 --- /dev/null +++ b/lua/Navigator/mux/zellij.lua @@ -0,0 +1,56 @@ +---@mod navigator.zellij Zellij navigator +---@brief [[ +---This module provides navigation and interaction for Zellij, and uses |navigator.vi| +---as a base class. This is used automatically when zellij is detected on host system +---but can also be used to manually override the mux. +--- +---@brief ]] + +---@private +---@class Zellij: Vi +---@field private direction table +---@field private execute fun(arg: string): unknown +local Zellij = require('Navigator.mux.vi'):new() + +---Creates a new Zellij navigator instance +---@return Zellij +---@usage [[ +---local ok, zellij = pcall(function() +--- return require('Navigator.mux.zellij'):new() +---end) +--- +---require('Navigator').setup({ +--- mux = ok and zellij or 'auto' +---}) +---@usage ]] +function Zellij:new() + assert(os.getenv('ZELLIJ'), '[Navigator] Zellij is not running!') + local U = require('Navigator.utils') + + ---@type Zellij + local state = { + execute = function(arg) + local cmd = string.format('zellij action %s', arg) + return U.execute(cmd) + end, + direction = { + p = 'focus-previous-pane', + h = 'move-focus left', + k = 'move-focus up', + l = 'move-focus right', + j = 'move-focus down' + }, + } + self.__index = self + return setmetatable(state, self) +end + +---Switch pane in zellij +---@param direction Direction See |navigator.api.Direction| +---@return Zellij +function Zellij:navigate(direction) + self.execute(string.format('%s', self.direction[direction])) + return self +end + +return Zellij diff --git a/lua/Navigator/navigate.lua b/lua/Navigator/navigate.lua index 12af69b..64c518e 100644 --- a/lua/Navigator/navigate.lua +++ b/lua/Navigator/navigate.lua @@ -13,18 +13,27 @@ local N = { ---Detect and load correct mux ---@return Vi local function load_mux() + local ok_zellij, zellij = pcall(function() + return require('Navigator.mux.zellij'):new() + end) + if ok_zellij then + return zellij + end + local ok_tmux, tmux = pcall(function() return require('Navigator.mux.tmux'):new() end) if ok_tmux then return tmux end + local ok_wezterm, wezterm = pcall(function() return require('Navigator.mux.wezterm'):new() end) if ok_wezterm then return wezterm end + return require('Navigator.mux.vi'):new() end From 8f141874b0cc52691b608ad3739935817dada2ee Mon Sep 17 00:00:00 2001 From: Cason Adams Date: Thu, 9 Mar 2023 07:29:22 -0700 Subject: [PATCH 2/3] Update lua/Navigator/mux/zellij.lua Co-authored-by: numToStr <24727447+numToStr@users.noreply.github.com> --- lua/Navigator/mux/zellij.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/Navigator/mux/zellij.lua b/lua/Navigator/mux/zellij.lua index b640923..2c3a849 100644 --- a/lua/Navigator/mux/zellij.lua +++ b/lua/Navigator/mux/zellij.lua @@ -3,7 +3,6 @@ ---This module provides navigation and interaction for Zellij, and uses |navigator.vi| ---as a base class. This is used automatically when zellij is detected on host system ---but can also be used to manually override the mux. ---- ---@brief ]] ---@private From de0a367ec7c73f69e4e347ba6015409af766ac97 Mon Sep 17 00:00:00 2001 From: Cason Adams Date: Thu, 9 Mar 2023 07:31:11 -0700 Subject: [PATCH 3/3] MR suggesions --- lua/Navigator/navigate.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lua/Navigator/navigate.lua b/lua/Navigator/navigate.lua index 64c518e..b08c034 100644 --- a/lua/Navigator/navigate.lua +++ b/lua/Navigator/navigate.lua @@ -13,13 +13,6 @@ local N = { ---Detect and load correct mux ---@return Vi local function load_mux() - local ok_zellij, zellij = pcall(function() - return require('Navigator.mux.zellij'):new() - end) - if ok_zellij then - return zellij - end - local ok_tmux, tmux = pcall(function() return require('Navigator.mux.tmux'):new() end) @@ -27,6 +20,13 @@ local function load_mux() return tmux end + local ok_zellij, zellij = pcall(function() + return require('Navigator.mux.zellij'):new() + end) + if ok_zellij then + return zellij + end + local ok_wezterm, wezterm = pcall(function() return require('Navigator.mux.wezterm'):new() end)