vi: make cursor positioning more vi compatible
Commit 24effc7a3 (vi: cursor positioning after whole-line 'y')
tried to save a few bytes by treating whole-line deletion the
same as whole-line yank.  If the deletion removed the last lines
of the file the cursor was left beyond the end of the file.
Revert the part of the commit related to whole-line deletion.
Position the cursor on the first non-whitespace character of the
line when whole lines are 'put'.
function                                             old     new   delta
do_cmd                                              4759    4781     +22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 22/0)               Total: 22 bytes
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
			
			
This commit is contained in:
		
				
					committed by
					
						
						Denys Vlasenko
					
				
			
			
				
	
			
			
			
						parent
						
							f193aeac1f
						
					
				
				
					commit
					d95f89ec57
				
			@@ -3717,6 +3717,7 @@ static void do_cmd(int c)
 | 
			
		||||
# endif
 | 
			
		||||
		} while (--cmdcnt > 0);
 | 
			
		||||
		dot += cnt;
 | 
			
		||||
		dot_skip_over_ws();
 | 
			
		||||
# if ENABLE_FEATURE_VI_YANKMARK && ENABLE_FEATURE_VI_VERBOSE_STATUS
 | 
			
		||||
		yank_status("Put", p, i);
 | 
			
		||||
# endif
 | 
			
		||||
@@ -4172,6 +4173,9 @@ static void do_cmd(int c)
 | 
			
		||||
				if (dot != (end-1)) {
 | 
			
		||||
					dot_prev();
 | 
			
		||||
				}
 | 
			
		||||
			} else if (c == 'd') {
 | 
			
		||||
				dot_begin();
 | 
			
		||||
				dot_skip_over_ws();
 | 
			
		||||
			} else {
 | 
			
		||||
				dot = save_dot;
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user