mirror of
				https://github.com/tmux/tmux.git
				synced 2025-10-26 12:27:15 +00:00 
			
		
		
		
	Merge branch 'obsd-master'
This commit is contained in:
		
							
								
								
									
										34
									
								
								input.c
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								input.c
									
									
									
									
									
								
							| @@ -109,10 +109,11 @@ struct input_ctx { | ||||
| 	int			utf8started; | ||||
|  | ||||
| 	int			ch; | ||||
| 	int			last; | ||||
| 	struct utf8_data	last; | ||||
|  | ||||
| 	int			flags; | ||||
| #define INPUT_DISCARD 0x1 | ||||
| #define INPUT_LAST 0x2 | ||||
|  | ||||
| 	const struct input_state *state; | ||||
|  | ||||
| @@ -867,8 +868,6 @@ input_reset(struct input_ctx *ictx, int clear) | ||||
|  | ||||
| 	input_clear(ictx); | ||||
|  | ||||
| 	ictx->last = -1; | ||||
|  | ||||
| 	ictx->state = &input_state_ground; | ||||
| 	ictx->flags = 0; | ||||
| } | ||||
| @@ -1149,7 +1148,9 @@ input_print(struct input_ctx *ictx) | ||||
|  | ||||
| 	utf8_set(&ictx->cell.cell.data, ictx->ch); | ||||
| 	screen_write_collect_add(sctx, &ictx->cell.cell); | ||||
| 	ictx->last = ictx->ch; | ||||
|  | ||||
| 	utf8_copy(&ictx->last, &ictx->cell.cell.data); | ||||
| 	ictx->flags |= INPUT_LAST; | ||||
|  | ||||
| 	ictx->cell.cell.attr &= ~GRID_ATTR_CHARSET; | ||||
|  | ||||
| @@ -1261,7 +1262,7 @@ input_c0_dispatch(struct input_ctx *ictx) | ||||
| 		break; | ||||
| 	} | ||||
|  | ||||
| 	ictx->last = -1; | ||||
| 	ictx->flags &= ~INPUT_LAST; | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
| @@ -1337,7 +1338,7 @@ input_esc_dispatch(struct input_ctx *ictx) | ||||
| 		break; | ||||
| 	} | ||||
|  | ||||
| 	ictx->last = -1; | ||||
| 	ictx->flags &= ~INPUT_LAST; | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
| @@ -1574,12 +1575,12 @@ input_csi_dispatch(struct input_ctx *ictx) | ||||
| 		if (n > m) | ||||
| 			n = m; | ||||
|  | ||||
| 		if (ictx->last == -1) | ||||
| 		if (~ictx->flags & INPUT_LAST) | ||||
| 			break; | ||||
| 		ictx->ch = ictx->last; | ||||
|  | ||||
| 		utf8_copy(&ictx->cell.cell.data, &ictx->last); | ||||
| 		for (i = 0; i < n; i++) | ||||
| 			input_print(ictx); | ||||
| 			screen_write_collect_add(sctx, &ictx->cell.cell); | ||||
| 		break; | ||||
| 	case INPUT_CSI_RCP: | ||||
| 		input_restore_state(ictx); | ||||
| @@ -1649,7 +1650,7 @@ input_csi_dispatch(struct input_ctx *ictx) | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	ictx->last = -1; | ||||
| 	ictx->flags &= ~INPUT_LAST; | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
| @@ -2284,7 +2285,7 @@ input_enter_dcs(struct input_ctx *ictx) | ||||
|  | ||||
| 	input_clear(ictx); | ||||
| 	input_start_timer(ictx); | ||||
| 	ictx->last = -1; | ||||
| 	ictx->flags &= ~INPUT_LAST; | ||||
| } | ||||
|  | ||||
| /* DCS terminator (ST) received. */ | ||||
| @@ -2341,7 +2342,7 @@ input_enter_osc(struct input_ctx *ictx) | ||||
|  | ||||
| 	input_clear(ictx); | ||||
| 	input_start_timer(ictx); | ||||
| 	ictx->last = -1; | ||||
| 	ictx->flags &= ~INPUT_LAST; | ||||
| } | ||||
|  | ||||
| /* OSC terminator (ST) received. */ | ||||
| @@ -2436,7 +2437,7 @@ input_enter_apc(struct input_ctx *ictx) | ||||
|  | ||||
| 	input_clear(ictx); | ||||
| 	input_start_timer(ictx); | ||||
| 	ictx->last = -1; | ||||
| 	ictx->flags &= ~INPUT_LAST; | ||||
| } | ||||
|  | ||||
| /* APC terminator (ST) received. */ | ||||
| @@ -2465,7 +2466,7 @@ input_enter_rename(struct input_ctx *ictx) | ||||
|  | ||||
| 	input_clear(ictx); | ||||
| 	input_start_timer(ictx); | ||||
| 	ictx->last = -1; | ||||
| 	ictx->flags &= ~INPUT_LAST; | ||||
| } | ||||
|  | ||||
| /* Rename terminator (ST) received. */ | ||||
| @@ -2509,7 +2510,7 @@ input_top_bit_set(struct input_ctx *ictx) | ||||
| 	struct screen_write_ctx	*sctx = &ictx->ctx; | ||||
| 	struct utf8_data	*ud = &ictx->utf8data; | ||||
|  | ||||
| 	ictx->last = -1; | ||||
| 	ictx->flags &= ~INPUT_LAST; | ||||
|  | ||||
| 	if (!ictx->utf8started) { | ||||
| 		if (utf8_open(ud, ictx->ch) != UTF8_MORE) | ||||
| @@ -2535,6 +2536,9 @@ input_top_bit_set(struct input_ctx *ictx) | ||||
| 	utf8_copy(&ictx->cell.cell.data, ud); | ||||
| 	screen_write_collect_add(sctx, &ictx->cell.cell); | ||||
|  | ||||
| 	utf8_copy(&ictx->last, &ictx->cell.cell.data); | ||||
| 	ictx->flags |= INPUT_LAST; | ||||
|  | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1212,7 +1212,7 @@ tty_keys_clipboard(struct tty *tty, const char *buf, size_t len, size_t *size) | ||||
| 	} | ||||
| 	if (end == len) | ||||
| 		return (1); | ||||
| 	*size = end + terminator; | ||||
| 	*size = end + 1; | ||||
|  | ||||
| 	/* Skip the initial part. */ | ||||
| 	buf += 5; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Thomas Adam
					Thomas Adam