Fix extra bracketed paste markers when pasting >8kb
Before this patch, when pasting over BUFSIZE (8192 bytes here), st would
do the following:
    \e[200~...8192 bytes...\e[201~\e[200~...remaining bytes...\e[201~
With this patch, the start marker is only sent when the offset is 0 (at
the beginning of selnotify) and the end marker is only sent when the
remaining bytes to read are 0 (at the end).
For short pastes, both conditions are true in the same iteration.
For long pastes, it removes the extra markers in the middle, keeping the
intended wrapping:
    \e[200~...8192 bytes......remaining bytes...\e[201~
Signed-off-by: Christoph Lohmann <20h@r-36.net>
			
			
This commit is contained in:
		
				
					committed by
					
						 Christoph Lohmann
						Christoph Lohmann
					
				
			
			
				
	
			
			
			
						parent
						
							20d53cebc1
						
					
				
				
					commit
					4be353e381
				
			
							
								
								
									
										4
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								st.c
									
									
									
									
									
								
							| @@ -1135,10 +1135,10 @@ selnotify(XEvent *e) | ||||
| 			*repl++ = '\r'; | ||||
| 		} | ||||
|  | ||||
| 		if (IS_SET(MODE_BRCKTPASTE)) | ||||
| 		if (IS_SET(MODE_BRCKTPASTE) && ofs == 0) | ||||
| 			ttywrite("\033[200~", 6); | ||||
| 		ttysend((char *)data, nitems * format / 8); | ||||
| 		if (IS_SET(MODE_BRCKTPASTE)) | ||||
| 		if (IS_SET(MODE_BRCKTPASTE) && rem == 0) | ||||
| 			ttywrite("\033[201~", 6); | ||||
| 		XFree(data); | ||||
| 		/* number of 32-bit chunks returned */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user