nvim + pi / bi-directional communication
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263local M = {}
---@class pi.Keymap---@field [1] string Key---@field mode? string|string[] Mode(s)---@field desc? string Description
---@class pi.WinConfig---@field layout "auto"|"right"|"left"|"top"|"bottom"|"float"---@field width_threshold number Columns threshold for "auto" (default: 150)---@field width number Split width for left/right (default: 80)---@field height number Split height for top/bottom (default: 20)---@field keys table<string, pi.Keymap|false>---@field focus_source_on_stopinsert boolean Switch to source window on stopinsert (default: true)
---@class pi.Config---@field auto_start? boolean Start RPC server on setup (default: true)---@field data_dir? string Override for lockfile/socket directory---@field models? string Pi --models flag (e.g., "sonnet:high,haiku:low")---@field provider? string Pi --provider flag---@field model? string Pi --model flag---@field thinking? string Pi --thinking flag (off|minimal|low|medium|high|xhigh)---@field load_extension? boolean|"auto" Pass bundled extension via --extension (default: "auto", skips if installed globally)---@field extra_args? string[] Additional CLI arguments---@field win? pi.WinConfig Window configuration
---@type pi.ConfigM.defaults = { auto_start = true, load_extension = 'auto', win = { layout = 'auto', width_threshold = 150, width = 80, height = 20, focus_source_on_stopinsert = true, keys = { close = { '<C-q>', mode = 'n', desc = 'Close Pi' }, stopinsert = { '<C-q>', mode = 't', desc = 'Exit terminal mode' }, suspend = { '<C-z>', mode = 't', desc = 'Suspend Neovim' }, picker = { '<C-Space>', mode = 't', desc = 'Open context picker' }, }, },}
---@type pi.ConfigM.current = vim.deepcopy(M.defaults)
---@param opts? pi.Configfunction M.setup(opts) if opts then M.current = vim.tbl_deep_extend('force', M.current, opts) endend
--- Get current config---@return pi.Configfunction M.get() return M.currentend
return M