mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
config: rename scrollback-indicator to scrollback-indicator-style
And turn it from a boolean to an enum. It can be set to: * `none` - disables the indicator * `static` - always rendered near the top of the window * `moving` - position reflects the scrollback position
This commit is contained in:
parent
5b868fd0c9
commit
c4679e474e
6 changed files with 54 additions and 20 deletions
37
config.c
37
config.c
|
|
@ -288,21 +288,33 @@ parse_section_main(const char *key, const char *value, struct config *conf,
|
|||
LOG_ERR("%s:%d: expected an integer: %s", path, lineno, value);
|
||||
return false;
|
||||
}
|
||||
conf->scrollback_lines = lines;
|
||||
conf->scrollback.lines = lines;
|
||||
}
|
||||
|
||||
else if (strcmp(key, "scrollback-indicator") == 0)
|
||||
conf->scrollback_indicator = str_to_bool(value);
|
||||
else if (strcmp(key, "scrollback-indicator") == 0) {
|
||||
if (strcmp(value, "none") == 0)
|
||||
conf->scrollback.indicator.style = SCROLLBACK_INDICATOR_STYLE_NONE;
|
||||
else if (strcmp(value, "static") == 0)
|
||||
conf->scrollback.indicator.style = SCROLLBACK_INDICATOR_STYLE_STATIC;
|
||||
else if (strcmp(value, "moving") == 0)
|
||||
conf->scrollback.indicator.style = SCROLLBACK_INDICATOR_STYLE_MOVING;
|
||||
else {
|
||||
LOG_ERR("%s:%d: scrollback-indicator-style must be one of "
|
||||
"'none', 'static' or 'moving'",
|
||||
path, lineno);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(key, "scrollback-indicator-format") == 0) {
|
||||
if (strcmp(value, "percent") == 0)
|
||||
conf->scrollback_indicator_format = SCROLLBACK_INDICATOR_PERCENT;
|
||||
conf->scrollback.indicator.format = SCROLLBACK_INDICATOR_FORMAT_PERCENT;
|
||||
else if (strcmp(value, "line") == 0)
|
||||
conf->scrollback_indicator_format = SCROLLBACK_INDICATOR_LINENO;
|
||||
conf->scrollback.indicator.format = SCROLLBACK_INDICATOR_FORMAT_LINENO;
|
||||
else {
|
||||
LOG_ERR("%s:%d: 'scrollback-indicator-format must be one "
|
||||
"of 'percent' or 'line', not %s",
|
||||
path, lineno, value);
|
||||
"of 'percent' or 'line'",
|
||||
path, lineno);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -933,10 +945,13 @@ config_load(struct config *conf, const char *conf_path)
|
|||
.pad_y = 2,
|
||||
.startup_mode = STARTUP_WINDOWED,
|
||||
.fonts = tll_init(),
|
||||
.scrollback_lines = 1000,
|
||||
.scrollback_indicator = true,
|
||||
.scrollback_indicator_format = SCROLLBACK_INDICATOR_PERCENT,
|
||||
|
||||
.scrollback = {
|
||||
.lines = 1000,
|
||||
.indicator = {
|
||||
.style = SCROLLBACK_INDICATOR_STYLE_MOVING,
|
||||
.format = SCROLLBACK_INDICATOR_FORMAT_PERCENT,
|
||||
},
|
||||
},
|
||||
.colors = {
|
||||
.fg = default_foreground,
|
||||
.bg = default_background,
|
||||
|
|
|
|||
19
config.h
19
config.h
|
|
@ -39,9 +39,22 @@ struct config {
|
|||
|
||||
tll(struct config_font) fonts;
|
||||
|
||||
int scrollback_lines;
|
||||
bool scrollback_indicator;
|
||||
enum {SCROLLBACK_INDICATOR_PERCENT, SCROLLBACK_INDICATOR_LINENO} scrollback_indicator_format;
|
||||
struct {
|
||||
int lines;
|
||||
|
||||
struct {
|
||||
enum {
|
||||
SCROLLBACK_INDICATOR_STYLE_NONE,
|
||||
SCROLLBACK_INDICATOR_STYLE_STATIC,
|
||||
SCROLLBACK_INDICATOR_STYLE_MOVING
|
||||
} style;
|
||||
|
||||
enum {
|
||||
SCROLLBACK_INDICATOR_FORMAT_PERCENT,
|
||||
SCROLLBACK_INDICATOR_FORMAT_LINENO
|
||||
} format;
|
||||
} indicator;
|
||||
} scrollback;
|
||||
|
||||
struct {
|
||||
uint32_t fg;
|
||||
|
|
|
|||
|
|
@ -68,14 +68,18 @@ in this order:
|
|||
*scrollback*
|
||||
Number of scrollback lines. Default: _1000_.
|
||||
|
||||
*scrollback-indicator*
|
||||
Boolean. Enables a position indicator when the viewport is not at
|
||||
the bottom of the scrollback history. Default: _yes_.
|
||||
*scrollback-indicator-style*
|
||||
Configures the style of the scrollback position indicator. One of
|
||||
*none*, *static* or *moving*. *none* disables the indicator
|
||||
completely. *static* always renders the indicator near the top at
|
||||
the window, and *moving* renders the indicator at the position
|
||||
corresponding to the current scrollback position. Default:
|
||||
_moving_.
|
||||
|
||||
*scrollback-indicator-format*
|
||||
Which format to use when displaying the scrollback position
|
||||
indicator. Either _percent_ or _line_. This option is ignored if
|
||||
*scrollback-indicator=no*. Default: _percent_.
|
||||
*scrollback-indicator-style=none*. Default: _percent_.
|
||||
|
||||
*workers*
|
||||
Number of threads to use for rendering. Set to 0 to disable
|
||||
|
|
|
|||
2
footrc
2
footrc
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
# font=monospace
|
||||
# scrollback=1000
|
||||
# scrollback-indicator-style=moving
|
||||
# scrollback-indicator-format=percent
|
||||
# geometry=700x500
|
||||
# pad=2x2
|
||||
# initial-window-mode=windowed
|
||||
|
|
|
|||
2
render.c
2
render.c
|
|
@ -1290,7 +1290,7 @@ render_csd(struct terminal *term)
|
|||
static void
|
||||
render_scrollback_position(struct terminal *term)
|
||||
{
|
||||
if (!term->conf->scrollback_indicator)
|
||||
if (term->conf->scrollback.indicator.style == SCROLLBACK_INDICATOR_STYLE_NONE)
|
||||
return;
|
||||
|
||||
/* Find absolute row number of the scrollback start */
|
||||
|
|
|
|||
|
|
@ -909,7 +909,7 @@ term_init(const struct config *conf, struct fdm *fdm, struct reaper *reaper,
|
|||
.tab_stops = tll_init(),
|
||||
.wl = wayl,
|
||||
.render = {
|
||||
.scrollback_lines = conf->scrollback_lines,
|
||||
.scrollback_lines = conf->scrollback.lines,
|
||||
.app_sync_updates.timer_fd = app_sync_updates_fd,
|
||||
.workers = {
|
||||
.count = conf->render_worker_count,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue