Merge branch 'obsd-master'

This commit is contained in:
Thomas Adam 2024-10-07 16:01:08 +01:00
commit 6a35b8ad07
4 changed files with 56 additions and 28 deletions

View File

@ -207,6 +207,7 @@ const struct options_name_map options_other_names[] = {
{ "display-panes-active-color", "display-panes-active-colour" }, { "display-panes-active-color", "display-panes-active-colour" },
{ "clock-mode-color", "clock-mode-colour" }, { "clock-mode-color", "clock-mode-colour" },
{ "cursor-color", "cursor-colour" }, { "cursor-color", "cursor-colour" },
{ "prompt-cursor-color", "prompt-cursor-colour" },
{ "pane-colors", "pane-colours" }, { "pane-colors", "pane-colours" },
{ NULL, NULL } { NULL, NULL }
}; };
@ -831,6 +832,21 @@ const struct options_table_entry options_table[] = {
.text = "Style of the status line." .text = "Style of the status line."
}, },
{ .name = "prompt-cursor-colour",
.type = OPTIONS_TABLE_COLOUR,
.scope = OPTIONS_TABLE_SESSION,
.default_num = 6,
.text = "Colour of the cursor when in the command prompt."
},
{ .name = "prompt-cursor-style",
.type = OPTIONS_TABLE_CHOICE,
.scope = OPTIONS_TABLE_SESSION,
.choices = options_table_cursor_style_list,
.default_num = 0,
.text = "Style of the cursor when in the command prompt."
},
{ .name = "update-environment", { .name = "update-environment",
.type = OPTIONS_TABLE_STRING, .type = OPTIONS_TABLE_STRING,
.scope = OPTIONS_TABLE_SESSION, .scope = OPTIONS_TABLE_SESSION,

View File

@ -2469,7 +2469,7 @@ server_client_reset_state(struct client *c)
/* Move cursor to pane cursor and offset. */ /* Move cursor to pane cursor and offset. */
if (c->prompt_string != NULL) { if (c->prompt_string != NULL) {
n = options_get_number(c->session->options, "status-position"); n = options_get_number(oo, "status-position");
if (n == 0) if (n == 0)
cy = 0; cy = 0;
else { else {
@ -2480,22 +2480,37 @@ server_client_reset_state(struct client *c)
cy = tty->sy - n; cy = tty->sy - n;
} }
cx = c->prompt_cursor; cx = c->prompt_cursor;
mode &= ~MODE_CURSOR;
} else if (c->overlay_draw == NULL) {
cursor = 0;
tty_window_offset(tty, &ox, &oy, &sx, &sy);
if (wp->xoff + s->cx >= ox && wp->xoff + s->cx <= ox + sx &&
wp->yoff + s->cy >= oy && wp->yoff + s->cy <= oy + sy) {
cursor = 1;
cx = wp->xoff + s->cx - ox; n = options_get_number(oo, "prompt-cursor-colour");
cy = wp->yoff + s->cy - oy; s->default_ccolour = n;
n = options_get_number(oo, "prompt-cursor-style");
screen_set_cursor_style(n, &s->default_cstyle,
&s->default_mode);
} else {
n = options_get_number(wp->options, "cursor-colour");
s->default_ccolour = n;
n = options_get_number(wp->options, "cursor-style");
screen_set_cursor_style(n, &s->default_cstyle,
&s->default_mode);
if (status_at_line(c) == 0) if (c->overlay_draw == NULL) {
cy += status_line_size(c); cursor = 0;
tty_window_offset(tty, &ox, &oy, &sx, &sy);
if (wp->xoff + s->cx >= ox &&
wp->xoff + s->cx <= ox + sx &&
wp->yoff + s->cy >= oy &&
wp->yoff + s->cy <= oy + sy) {
cursor = 1;
cx = wp->xoff + s->cx - ox;
cy = wp->yoff + s->cy - oy;
if (status_at_line(c) == 0)
cy += status_line_size(c);
}
if (!cursor)
mode &= ~MODE_CURSOR;
} }
if (!cursor)
mode &= ~MODE_CURSOR;
} }
log_debug("%s: cursor to %u,%u", __func__, cx, cy); log_debug("%s: cursor to %u,%u", __func__, cx, cy);
tty_cursor(tty, cx, cy); tty_cursor(tty, cx, cy);

View File

@ -660,7 +660,7 @@ status_prompt_set(struct client *c, struct cmd_find_state *fs,
c->prompt_mode = PROMPT_ENTRY; c->prompt_mode = PROMPT_ENTRY;
if (~flags & PROMPT_INCREMENTAL) if (~flags & PROMPT_INCREMENTAL)
c->tty.flags |= (TTY_NOCURSOR|TTY_FREEZE); c->tty.flags |= TTY_FREEZE;
c->flags |= CLIENT_REDRAWSTATUS; c->flags |= CLIENT_REDRAWSTATUS;
if (flags & PROMPT_INCREMENTAL) if (flags & PROMPT_INCREMENTAL)
@ -738,7 +738,7 @@ status_prompt_redraw(struct client *c)
struct screen old_screen; struct screen old_screen;
u_int i, lines, offset, left, start, width; u_int i, lines, offset, left, start, width;
u_int pcursor, pwidth, promptline; u_int pcursor, pwidth, promptline;
struct grid_cell gc, cursorgc; struct grid_cell gc;
struct format_tree *ft; struct format_tree *ft;
if (c->tty.sx == 0 || c->tty.sy == 0) if (c->tty.sx == 0 || c->tty.sy == 0)
@ -761,9 +761,6 @@ status_prompt_redraw(struct client *c)
style_apply(&gc, s->options, "message-style", ft); style_apply(&gc, s->options, "message-style", ft);
format_free(ft); format_free(ft);
memcpy(&cursorgc, &gc, sizeof cursorgc);
cursorgc.attr ^= GRID_ATTR_REVERSE;
start = format_width(c->prompt_string); start = format_width(c->prompt_string);
if (start > c->tty.sx) if (start > c->tty.sx)
start = c->tty.sx; start = c->tty.sx;
@ -808,16 +805,9 @@ status_prompt_redraw(struct client *c)
if (width > offset + pwidth) if (width > offset + pwidth)
break; break;
if (i != c->prompt_index) { utf8_copy(&gc.data, &c->prompt_buffer[i]);
utf8_copy(&gc.data, &c->prompt_buffer[i]); screen_write_cell(&ctx, &gc);
screen_write_cell(&ctx, &gc);
} else {
utf8_copy(&cursorgc.data, &c->prompt_buffer[i]);
screen_write_cell(&ctx, &cursorgc);
}
} }
if (sl->active->cx < screen_size_x(sl->active) && c->prompt_index >= i)
screen_write_putc(&ctx, &cursorgc, ' ');
finished: finished:
screen_write_stop(&ctx); screen_write_stop(&ctx);

7
tmux.1
View File

@ -4552,6 +4552,13 @@ waits after
.Ic prefix .Ic prefix
is input before dismissing it. is input before dismissing it.
Can be set to zero to disable any timeout. Can be set to zero to disable any timeout.
.It Ic prompt-cursor-colour Ar colour
Set the colour of the cursor in the command prompt.
.It Ic prompt-cursor-style Ar style
Set the style of the cursor in the command prompt.
See the
.Ic cursor-style
options for available styles.
.It Xo Ic renumber-windows .It Xo Ic renumber-windows
.Op Ic on | off .Op Ic on | off
.Xc .Xc