focus.nvim icon indicating copy to clipboard operation
focus.nvim copied to clipboard

feat(autoresize): add equalise_min_cols and equalise_min_rows config options

Open lanej opened this issue 1 month ago • 4 comments

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_cols config option (default: 0)
  • Added equalise_min_rows config 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_cols is set: triggers when columns >= threshold
  • If only equalise_min_rows is 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.

lanej avatar Nov 13 '25 21:11 lanej