mirror of
https://github.com/tmux/tmux.git
synced 2024-10-31 22:58:49 +00:00
Support for \e[3J to clear the history. Also send the corresponding
terminfo code (E3) before locking.
This commit is contained in:
parent
7ff4cf9405
commit
f0aad68aee
11
input.c
11
input.c
@ -1126,6 +1126,17 @@ input_csi_dispatch(struct input_ctx *ictx)
|
||||
case 2:
|
||||
screen_write_clearscreen(sctx);
|
||||
break;
|
||||
case 3:
|
||||
switch (input_get(ictx, 1, 0, 0)) {
|
||||
case 0:
|
||||
/*
|
||||
* Linux console extension to clear history
|
||||
* (for example before locking the screen).
|
||||
*/
|
||||
screen_write_clearhistory(sctx);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
log_debug("%s: unknown '%c'", __func__, ictx->ch);
|
||||
break;
|
||||
|
@ -985,6 +985,17 @@ screen_write_clearscreen(struct screen_write_ctx *ctx)
|
||||
tty_write(tty_cmd_clearscreen, &ttyctx);
|
||||
}
|
||||
|
||||
/* Clear entire history. */
|
||||
void
|
||||
screen_write_clearhistory(struct screen_write_ctx *ctx)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
struct grid *gd = s->grid;
|
||||
|
||||
grid_move_lines(gd, 0, gd->hsize, gd->sy);
|
||||
gd->hsize = 0;
|
||||
}
|
||||
|
||||
/* Write cell data. */
|
||||
void
|
||||
screen_write_cell(struct screen_write_ctx *ctx,
|
||||
|
@ -237,6 +237,7 @@ server_lock_client(struct client *c)
|
||||
tty_stop_tty(&c->tty);
|
||||
tty_raw(&c->tty, tty_term_string(c->tty.term, TTYC_SMCUP));
|
||||
tty_raw(&c->tty, tty_term_string(c->tty.term, TTYC_CLEAR));
|
||||
tty_raw(&c->tty, tty_term_string(c->tty.term, TTYC_E3));
|
||||
|
||||
c->flags |= CLIENT_SUSPENDED;
|
||||
server_write_client(c, MSG_LOCK, &lockdata, sizeof lockdata);
|
||||
|
2
tmux.h
2
tmux.h
@ -206,6 +206,7 @@ enum tty_code_code {
|
||||
TTYC_DIM, /* enter_dim_mode, mh */
|
||||
TTYC_DL, /* parm_delete_line, DL */
|
||||
TTYC_DL1, /* delete_line, dl */
|
||||
TTYC_E3,
|
||||
TTYC_EL, /* clr_eol, ce */
|
||||
TTYC_EL1, /* clr_bol, cb */
|
||||
TTYC_ENACS, /* ena_acs, eA */
|
||||
@ -1866,6 +1867,7 @@ void screen_write_kkeypadmode(struct screen_write_ctx *, int);
|
||||
void screen_write_clearendofscreen(struct screen_write_ctx *);
|
||||
void screen_write_clearstartofscreen(struct screen_write_ctx *);
|
||||
void screen_write_clearscreen(struct screen_write_ctx *);
|
||||
void screen_write_clearhistory(struct screen_write_ctx *);
|
||||
void screen_write_cell(struct screen_write_ctx *,
|
||||
const struct grid_cell *, const struct utf8_data *);
|
||||
void screen_write_setselection(struct screen_write_ctx *, u_char *, u_int);
|
||||
|
@ -61,6 +61,7 @@ const struct tty_term_code_entry tty_term_codes[NTTYCODE] = {
|
||||
{ TTYC_DIM, TTYCODE_STRING, "dim" },
|
||||
{ TTYC_DL, TTYCODE_STRING, "dl" },
|
||||
{ TTYC_DL1, TTYCODE_STRING, "dl1" },
|
||||
{ TTYC_E3, TTYCODE_STRING, "E3" },
|
||||
{ TTYC_EL, TTYCODE_STRING, "el" },
|
||||
{ TTYC_EL1, TTYCODE_STRING, "el1" },
|
||||
{ TTYC_ENACS, TTYCODE_STRING, "enacs" },
|
||||
|
Loading…
Reference in New Issue
Block a user