mirror of
https://github.com/neovim/neovim.git
synced 2025-10-06 18:06:30 +00:00
Merge pull request #25148 from glepnir/fixed_opt
fix(float): add fixed option
This commit is contained in:
@@ -112,6 +112,7 @@ typedef struct {
|
||||
String footer_pos;
|
||||
String style;
|
||||
Boolean noautocmd;
|
||||
Boolean fixed;
|
||||
} Dict(float_config);
|
||||
|
||||
typedef struct {
|
||||
|
@@ -163,6 +163,8 @@
|
||||
/// - noautocmd: If true then no buffer-related autocommand events such as
|
||||
/// |BufEnter|, |BufLeave| or |BufWinEnter| may fire from
|
||||
/// calling this function.
|
||||
/// - fixed: If true when anchor is NW or SW, the float window
|
||||
/// would be kept fixed even if the window would be truncated.
|
||||
///
|
||||
/// @param[out] err Error details, if any
|
||||
///
|
||||
@@ -845,6 +847,10 @@ static bool parse_float_config(Dict(float_config) *config, FloatConfig *fconfig,
|
||||
fconfig->noautocmd = config->noautocmd;
|
||||
}
|
||||
|
||||
if (HAS_KEY_X(config, fixed)) {
|
||||
fconfig->fixed = config->fixed;
|
||||
}
|
||||
|
||||
return true;
|
||||
#undef HAS_KEY_X
|
||||
}
|
||||
|
@@ -966,6 +966,7 @@ typedef struct {
|
||||
VirtText footer_chunks;
|
||||
int footer_width;
|
||||
bool noautocmd;
|
||||
bool fixed;
|
||||
} FloatConfig;
|
||||
|
||||
#define FLOAT_CONFIG_INIT ((FloatConfig){ .height = 0, .width = 0, \
|
||||
@@ -975,7 +976,8 @@ typedef struct {
|
||||
.focusable = true, \
|
||||
.zindex = kZIndexFloatDefault, \
|
||||
.style = kWinStyleUnused, \
|
||||
.noautocmd = false })
|
||||
.noautocmd = false, \
|
||||
.fixed = false })
|
||||
|
||||
// Structure to store last cursor position and topline. Used by check_lnums()
|
||||
// and reset_lnums().
|
||||
|
@@ -1010,6 +1010,10 @@ void ui_ext_win_position(win_T *wp, bool validate)
|
||||
comp_col += grid->comp_col;
|
||||
comp_row = MAX(MIN(comp_row, Rows - wp->w_height_outer - (p_ch > 0 ? 1 : 0)), 0);
|
||||
comp_col = MAX(MIN(comp_col, Columns - wp->w_width_outer), 0);
|
||||
int right_extra = Columns - (int)c.col - wp->w_width - (c.border_chars[2][0] != 0);
|
||||
if (!(c.anchor & kFloatAnchorEast) && c.fixed && right_extra < 0) {
|
||||
comp_col = (int)c.col;
|
||||
}
|
||||
wp->w_winrow = comp_row;
|
||||
wp->w_wincol = comp_col;
|
||||
ui_comp_put_grid(&wp->w_grid_alloc, comp_row, comp_col,
|
||||
|
Reference in New Issue
Block a user