-/* $OpenBSD: options-table.c,v 1.181 2024/10/07 08:50:47 nicm Exp $ */
+/* $OpenBSD: options-table.c,v 1.182 2024/10/07 12:58:36 nicm Exp $ */
/*
* Copyright (c) 2011 Nicholas Marriott <nicholas.marriott@gmail.com>
{ "display-panes-active-color", "display-panes-active-colour" },
{ "clock-mode-color", "clock-mode-colour" },
{ "cursor-color", "cursor-colour" },
+ { "prompt-cursor-color", "prompt-cursor-colour" },
{ "pane-colors", "pane-colours" },
{ NULL, NULL }
};
.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",
.type = OPTIONS_TABLE_STRING,
.scope = OPTIONS_TABLE_SESSION,
-/* $OpenBSD: server-client.c,v 1.412 2024/10/07 08:50:47 nicm Exp $ */
+/* $OpenBSD: server-client.c,v 1.413 2024/10/07 12:58:36 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicholas.marriott@gmail.com>
/* Move cursor to pane cursor and offset. */
if (c->prompt_string != NULL) {
- n = options_get_number(c->session->options, "status-position");
+ n = options_get_number(oo, "status-position");
if (n == 0)
cy = 0;
else {
cy = tty->sy - n;
}
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;
- cy = wp->yoff + s->cy - oy;
-
- if (status_at_line(c) == 0)
- cy += status_line_size(c);
+
+ n = options_get_number(oo, "prompt-cursor-colour");
+ 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 (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;
+ 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);
tty_cursor(tty, cx, cy);
-/* $OpenBSD: status.c,v 1.246 2024/10/04 19:16:13 nicm Exp $ */
+/* $OpenBSD: status.c,v 1.247 2024/10/07 12:58:36 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
c->prompt_mode = PROMPT_ENTRY;
if (~flags & PROMPT_INCREMENTAL)
- c->tty.flags |= (TTY_NOCURSOR|TTY_FREEZE);
+ c->tty.flags |= TTY_FREEZE;
c->flags |= CLIENT_REDRAWSTATUS;
if (flags & PROMPT_INCREMENTAL)
struct screen old_screen;
u_int i, lines, offset, left, start, width;
u_int pcursor, pwidth, promptline;
- struct grid_cell gc, cursorgc;
+ struct grid_cell gc;
struct format_tree *ft;
if (c->tty.sx == 0 || c->tty.sy == 0)
style_apply(&gc, s->options, "message-style", ft);
format_free(ft);
- memcpy(&cursorgc, &gc, sizeof cursorgc);
- cursorgc.attr ^= GRID_ATTR_REVERSE;
-
start = format_width(c->prompt_string);
if (start > c->tty.sx)
start = c->tty.sx;
if (width > offset + pwidth)
break;
- if (i != c->prompt_index) {
- utf8_copy(&gc.data, &c->prompt_buffer[i]);
- screen_write_cell(&ctx, &gc);
- } else {
- utf8_copy(&cursorgc.data, &c->prompt_buffer[i]);
- screen_write_cell(&ctx, &cursorgc);
- }
+ utf8_copy(&gc.data, &c->prompt_buffer[i]);
+ screen_write_cell(&ctx, &gc);
}
- if (sl->active->cx < screen_size_x(sl->active) && c->prompt_index >= i)
- screen_write_putc(&ctx, &cursorgc, ' ');
finished:
screen_write_stop(&ctx);
-.\" $OpenBSD: tmux.1,v 1.963 2024/10/07 08:50:47 nicm Exp $
+.\" $OpenBSD: tmux.1,v 1.964 2024/10/07 12:58:36 nicm Exp $
.\"
.\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
.\"
.Ic prefix
is input before dismissing it.
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
.Op Ic on | off
.Xc