focus.nvim
focus.nvim copied to clipboard
feat(autoresize): add equalise_min_cols and equalise_min_rows config options
Summary
Adds equalise_min_cols and equalise_min_rows config options to use equal-size splits when the terminal has sufficient columns and/or rows. This allows users to prefer equal splits on large terminals while keeping golden ratio autoresize on smaller displays.
Changes
- Added
equalise_min_colsconfig option (default: 0) - Added
equalise_min_rowsconfig option (default: 0) - Modified autoresize logic to check terminal size against thresholds
- When thresholds are met: uses
wincmd =for equal splits (all windows equal size) - When thresholds are not met: uses golden ratio autoresize (focused window larger)
Configuration Examples
Equal splits on wide terminals:
require("focus").setup({
autoresize = {
equalise_min_cols = 120, -- Equal splits when terminal >= 120 columns
},
})
Equal splits on tall terminals:
require("focus").setup({
autoresize = {
equalise_min_rows = 40, -- Equal splits when terminal >= 40 rows
},
})
Equal splits only when BOTH wide AND tall:
require("focus").setup({
autoresize = {
equalise_min_cols = 120, -- Equal splits when terminal >= 120 columns
equalise_min_rows = 40, -- AND >= 40 rows
},
})
Behavior Logic
- If only
equalise_min_colsis set: triggers when columns >= threshold - If only
equalise_min_rowsis set: triggers when rows >= threshold - If both are set: triggers when BOTH conditions are met (AND logic)
- Otherwise: uses golden ratio autoresize
Use Case
Users with large terminals often prefer equal-size splits for better code visibility across all windows, but still want focused window autoresizing on smaller displays. These options provide the best of both worlds based on available screen space.
Backward Compatibility
Default values are 0 (disabled), preserving existing golden ratio behavior for all current users.