terminal: Create module to consolidate term utils
Terminal application, a variety of shell configurations, terminal file and session management all consolidated in one place.
This commit is contained in:
parent
2e0c992a54
commit
9781b26b22
31 changed files with 0 additions and 0 deletions
77
terminal/.config/wezterm/events.lua
Normal file
77
terminal/.config/wezterm/events.lua
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
local wezterm = require 'wezterm'
|
||||
local io = require 'io'
|
||||
local os = require 'os'
|
||||
local act = wezterm.action
|
||||
|
||||
local function setup()
|
||||
local function isViProcess(pane)
|
||||
local proc = pane:get_foreground_process_name()
|
||||
if (proc:find('vim') or proc:find('nvim')) then return true end
|
||||
return false
|
||||
end
|
||||
|
||||
local function conditionalActivatePane(window, pane, pane_direction,
|
||||
vim_direction)
|
||||
if (isViProcess(pane)) then
|
||||
window:perform_action(act.Multiple {
|
||||
act.SendKey { key = 'w', mods = 'CTRL' },
|
||||
act.SendKey { key = vim_direction }
|
||||
}, pane)
|
||||
else
|
||||
window:perform_action(act.ActivatePaneDirection(pane_direction),
|
||||
pane)
|
||||
end
|
||||
end
|
||||
|
||||
wezterm.on('ActivatePaneDirection-right', function(window, pane)
|
||||
conditionalActivatePane(window, pane, 'Right', 'l')
|
||||
end)
|
||||
wezterm.on('ActivatePaneDirection-left', function(window, pane)
|
||||
conditionalActivatePane(window, pane, 'Left', 'h')
|
||||
end)
|
||||
wezterm.on('ActivatePaneDirection-up', function(window, pane)
|
||||
conditionalActivatePane(window, pane, 'Up', 'k')
|
||||
end)
|
||||
wezterm.on('ActivatePaneDirection-down', function(window, pane)
|
||||
conditionalActivatePane(window, pane, 'Down', 'j')
|
||||
end)
|
||||
|
||||
-- Retrieve the current scrollback text and send to editor
|
||||
wezterm.on('edit-scrollback', function(window, pane)
|
||||
local viewport_text = pane:get_lines_as_text(10000)
|
||||
|
||||
-- Create a temporary file to pass to vim
|
||||
local name = os.tmpname()
|
||||
|
||||
local f = io.open(name, 'w+')
|
||||
if f == nil then return false end
|
||||
f:write(viewport_text)
|
||||
f:flush()
|
||||
f:close()
|
||||
|
||||
-- Open a new window running vim and tell it to open the file
|
||||
window:perform_action(act.SpawnCommandInNewTab {
|
||||
args = { (os.getenv('EDITOR') or 'vi'), name }
|
||||
}, pane)
|
||||
|
||||
-- Wait time for vim to read the file before we remove it.
|
||||
wezterm.sleep_ms(1000)
|
||||
os.remove(name)
|
||||
end)
|
||||
|
||||
wezterm.on("toggle-leader", function(window, pane)
|
||||
wezterm.log_info("toggling the leader")
|
||||
local overrides = window:get_config_overrides() or {}
|
||||
if not overrides.leader then
|
||||
wezterm.log_info("leader wasn't set")
|
||||
overrides.leader = { key = "s", mods = "SUPER" };
|
||||
else
|
||||
wezterm.log_info("leader was set")
|
||||
overrides.leader = nil
|
||||
end
|
||||
|
||||
window:set_config_overrides(overrides)
|
||||
end)
|
||||
end
|
||||
|
||||
return { setup = setup }
|
||||
Loading…
Add table
Add a link
Reference in a new issue