mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Sync OpenBSD patchset 969:
Support for \e[3J to clear the history. Also send the corresponding terminfo code (E3) before locking.
This commit is contained in:
		
							
								
								
									
										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
									
									
									
									
									
								
							@@ -202,6 +202,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 */
 | 
			
		||||
@@ -1862,6 +1863,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);
 | 
			
		||||
 
 | 
			
		||||
@@ -64,6 +64,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" },
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user