Do not interpret CSI ? u as DECRC
The kitty keyboard protocol docs recommend CSI ? u to query support for that protocol, see https://sw.kovidgoyal.net/kitty/keyboard-protocol/ For better or worse, fish shell uses this query to work around bugs in other terminals triggered by requesting that protocol via CSI = 5 u. Unfortunately, st interprets CSI ? u as DECRC (restore cursor position). reproduce with 'printf "\x1b[?u"; cat'. fish could work around this by switching to the alternate screen before running this query; but that might cause tearing on terminals that don't support Synchronized Output. I'm not sure. In the meantime, let's correct our parser. This adds a redundant else-after-return, for consistency with the surrounding code.
This commit is contained in:
		
				
					committed by
					
						 Hiltjo Posthuma
						Hiltjo Posthuma
					
				
			
			
				
	
			
			
			
						parent
						
							6009e6e25b
						
					
				
				
					commit
					98610fcd37
				
			
							
								
								
									
										6
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								st.c
									
									
									
									
									
								
							| @@ -1801,7 +1801,11 @@ csihandle(void) | |||||||
| 		tcursor(CURSOR_SAVE); | 		tcursor(CURSOR_SAVE); | ||||||
| 		break; | 		break; | ||||||
| 	case 'u': /* DECRC -- Restore cursor position (ANSI.SYS) */ | 	case 'u': /* DECRC -- Restore cursor position (ANSI.SYS) */ | ||||||
| 		tcursor(CURSOR_LOAD); | 		if (csiescseq.priv) { | ||||||
|  | 			goto unknown; | ||||||
|  | 		} else { | ||||||
|  | 			tcursor(CURSOR_LOAD); | ||||||
|  | 		} | ||||||
| 		break; | 		break; | ||||||
| 	case ' ': | 	case ' ': | ||||||
| 		switch (csiescseq.mode[1]) { | 		switch (csiescseq.mode[1]) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user