64 lines
2.4 KiB
Lua
64 lines
2.4 KiB
Lua
-- window.lua --- side-window settings, quit, and keyboard resize.
|
|
--
|
|
-- The Lua half of the bottom-panel arc's window surface. The placement
|
|
-- policy itself is Rust (`pmacs.window.display` / `display_file` /
|
|
-- `quit` / `resize`); this module owns the two settings those paths
|
|
-- resolve, plus the interactive commands and their Emacs bindings.
|
|
--
|
|
-- Both settings are read against the window's OWN buffer (buffer-local
|
|
-- override -> global -> default), so a project or a mode hook can pin a
|
|
-- taller panel for one buffer with `pmacs.config.set_local`.
|
|
--
|
|
-- Framing: docs/bottom-panel-framing.md (Q#BP2, Q#BP5b, Q#BP11).
|
|
|
|
-- Outer rows (text + mode line) a freshly created panel takes when the
|
|
-- caller supplies no explicit `height`. Only consulted at CREATION: a
|
|
-- replacement preserves whatever height the user dragged the slot to.
|
|
pmacs.config.define {
|
|
name = "window.panel-height",
|
|
description = "Outer rows a newly created bottom panel occupies.",
|
|
type = "integer",
|
|
default = 12,
|
|
min = 2,
|
|
mutability = "live",
|
|
}
|
|
|
|
-- A preference, not a structural rule: it constrains INTERACTIVE resize
|
|
-- (drag and the commands below) and is deliberately ignored by the
|
|
-- ordinary layout pass and by frame-resize reconciliation, so raising it
|
|
-- can never invalidate a layout that already exists.
|
|
--
|
|
-- The registry floor is 1 rather than 2 on purpose: a value below the
|
|
-- STRUCTURAL floor is clamped when it is read, not rejected when it is
|
|
-- written, so a user who asks for a smaller minimum simply gets the
|
|
-- smallest one the layout can actually honor.
|
|
pmacs.config.define {
|
|
name = "window.min-height",
|
|
description = "Smallest outer rows interactive resize will leave a window.",
|
|
type = "integer",
|
|
default = 2,
|
|
min = 1,
|
|
mutability = "live",
|
|
}
|
|
|
|
pmacs.command.define {
|
|
name = "window.quit",
|
|
description = "Quit the selected side window: restore or delete it",
|
|
fn = function() pmacs.window.quit() end,
|
|
}
|
|
|
|
pmacs.command.define {
|
|
name = "window.enlarge",
|
|
description = "Make the selected window one row taller",
|
|
fn = function() pmacs.window.resize(nil, 1) end,
|
|
}
|
|
|
|
pmacs.command.define {
|
|
name = "window.shrink",
|
|
description = "Make the selected window one row shorter",
|
|
fn = function() pmacs.window.resize(nil, -1) end,
|
|
}
|
|
|
|
pmacs.keymap.bind { scope = "global", sequence = "C-x ^", command = "window.enlarge" }
|
|
pmacs.keymap.bind { scope = "global", sequence = "C-x C-^", command = "window.shrink" }
|