Compare commits
3 commits
2a63eb381c
...
1029f738b8
| Author | SHA1 | Date | |
|---|---|---|---|
| 1029f738b8 | |||
| abbf55046f | |||
| 24636c5081 |
2 changed files with 27 additions and 14 deletions
8
flake.lock
generated
8
flake.lock
generated
|
|
@ -760,11 +760,11 @@
|
|||
"nixvim": "nixvim_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1758995705,
|
||||
"narHash": "sha256-ix/VUpm2MIAr16yMmUeB/B8tdv7ximran6zZa1OlZvg=",
|
||||
"lastModified": 1759120734,
|
||||
"narHash": "sha256-BCor67IctwZ09Bx7QuEXY5effIUqk8lVNqDhrRmLM4s=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "939e8a45f5f9c3ab32f071a559bca6eceead0d53",
|
||||
"revCount": 104,
|
||||
"rev": "620bad601117de9f9d123d2772b7d421114d4af1",
|
||||
"revCount": 105,
|
||||
"type": "git",
|
||||
"url": "https://git.sajenim.dev/jasmine/nixvim-config.git"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -124,34 +124,47 @@ config.keys = {
|
|||
--
|
||||
|
||||
{ -- Split pane vertically
|
||||
key = "v",
|
||||
key = "s",
|
||||
mods = "LEADER",
|
||||
action = wezterm.action.SplitVertical({ domain = "CurrentPaneDomain" }),
|
||||
},
|
||||
|
||||
{ -- Split pane horizontally
|
||||
key = "s",
|
||||
key = "v",
|
||||
mods = "LEADER",
|
||||
action = wezterm.action.SplitHorizontal({ domain = "CurrentPaneDomain" }),
|
||||
},
|
||||
|
||||
{ -- If there is only one pane, split it vertically, otherwise toggle zoom on the first pane.
|
||||
{ -- Dynamic pane management: Creates development layout or toggles focus between editor and terminal
|
||||
key = "`",
|
||||
mods = "LEADER",
|
||||
action = wezterm.action_callback(function(_, pane)
|
||||
local tab = pane:tab()
|
||||
local panes = tab:panes_with_info()
|
||||
|
||||
-- Case 1: Single pane - Create a 3-pane development layout
|
||||
if #panes == 1 then
|
||||
-- First split: Create bottom terminal pane (30% height)
|
||||
pane:split({
|
||||
direction = "Bottom",
|
||||
size = 0.3,
|
||||
size = 0.30,
|
||||
})
|
||||
elseif not panes[1].is_zoomed then
|
||||
panes[1].pane:activate()
|
||||
tab:set_zoomed(true)
|
||||
elseif panes[1].is_zoomed then
|
||||
tab:set_zoomed(false)
|
||||
panes[2].pane:activate()
|
||||
-- Second split: Create left sidebar for Claude Code (25% width)
|
||||
pane:split({
|
||||
direction = "Left",
|
||||
size = 0.25,
|
||||
args = { "claude" } -- Launch Claude Code in the sidebar
|
||||
})
|
||||
|
||||
-- Case 2: Multiple panes exist, pane 2 (editor) is not zoomed - Focus and zoom editor
|
||||
elseif not panes[2].is_zoomed then
|
||||
panes[2].pane:activate() -- Switch to editor pane (typically Neovim)
|
||||
tab:set_zoomed(true) -- Zoom to hide other panes for focused editing
|
||||
|
||||
-- Case 3: Pane 2 (editor) is currently zoomed - Unzoom and return to terminal
|
||||
elseif panes[2].is_zoomed then
|
||||
tab:set_zoomed(false) -- Restore multi-pane layout
|
||||
panes[3].pane:activate() -- Focus the terminal pane for quick commands
|
||||
end
|
||||
end),
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue