mirror of
https://github.com/tmux/tmux.git
synced 2024-12-13 01:48:47 +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:
|
case 2:
|
||||||
screen_write_clearscreen(sctx);
|
screen_write_clearscreen(sctx);
|
||||||
break;
|
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:
|
default:
|
||||||
log_debug("%s: unknown '%c'", __func__, ictx->ch);
|
log_debug("%s: unknown '%c'", __func__, ictx->ch);
|
||||||
break;
|
break;
|
||||||
|
@ -985,6 +985,17 @@ screen_write_clearscreen(struct screen_write_ctx *ctx)
|
|||||||
tty_write(tty_cmd_clearscreen, &ttyctx);
|
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. */
|
/* Write cell data. */
|
||||||
void
|
void
|
||||||
screen_write_cell(struct screen_write_ctx *ctx,
|
screen_write_cell(struct screen_write_ctx *ctx,
|
||||||
|
@ -237,6 +237,7 @@ server_lock_client(struct client *c)
|
|||||||
tty_stop_tty(&c->tty);
|
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_SMCUP));
|
||||||
tty_raw(&c->tty, tty_term_string(c->tty.term, TTYC_CLEAR));
|
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;
|
c->flags |= CLIENT_SUSPENDED;
|
||||||
server_write_client(c, MSG_LOCK, &lockdata, sizeof lockdata);
|
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_DIM, /* enter_dim_mode, mh */
|
||||||
TTYC_DL, /* parm_delete_line, DL */
|
TTYC_DL, /* parm_delete_line, DL */
|
||||||
TTYC_DL1, /* delete_line, dl */
|
TTYC_DL1, /* delete_line, dl */
|
||||||
|
TTYC_E3,
|
||||||
TTYC_EL, /* clr_eol, ce */
|
TTYC_EL, /* clr_eol, ce */
|
||||||
TTYC_EL1, /* clr_bol, cb */
|
TTYC_EL1, /* clr_bol, cb */
|
||||||
TTYC_ENACS, /* ena_acs, eA */
|
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_clearendofscreen(struct screen_write_ctx *);
|
||||||
void screen_write_clearstartofscreen(struct screen_write_ctx *);
|
void screen_write_clearstartofscreen(struct screen_write_ctx *);
|
||||||
void screen_write_clearscreen(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 *,
|
void screen_write_cell(struct screen_write_ctx *,
|
||||||
const struct grid_cell *, const struct utf8_data *);
|
const struct grid_cell *, const struct utf8_data *);
|
||||||
void screen_write_setselection(struct screen_write_ctx *, u_char *, u_int);
|
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_DIM, TTYCODE_STRING, "dim" },
|
||||||
{ TTYC_DL, TTYCODE_STRING, "dl" },
|
{ TTYC_DL, TTYCODE_STRING, "dl" },
|
||||||
{ TTYC_DL1, TTYCODE_STRING, "dl1" },
|
{ TTYC_DL1, TTYCODE_STRING, "dl1" },
|
||||||
|
{ TTYC_E3, TTYCODE_STRING, "E3" },
|
||||||
{ TTYC_EL, TTYCODE_STRING, "el" },
|
{ TTYC_EL, TTYCODE_STRING, "el" },
|
||||||
{ TTYC_EL1, TTYCODE_STRING, "el1" },
|
{ TTYC_EL1, TTYCODE_STRING, "el1" },
|
||||||
{ TTYC_ENACS, TTYCODE_STRING, "enacs" },
|
{ TTYC_ENACS, TTYCODE_STRING, "enacs" },
|
||||||
|
Loading…
Reference in New Issue
Block a user