vi: avoid touching a new file with ZZ when no editing has been done
This is the behaviour observed with standard vim and busybox vi of at least 1.22.1. It was changed with commit "32afd3a vi: some simplifications" which happened before 1.23.0. Mistyping filename on command line happens fairly often and it's better we restore the old behaviour to avoid a few unnecessary flash writes and sometimes efforts of debugging bugs caused by those unneeded stray files. Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		
				
					committed by
					
						
						Denys Vlasenko
					
				
			
			
				
	
			
			
			
						parent
						
							e3b65ab43d
						
					
				
				
					commit
					8f3bf4f0d3
				
			
							
								
								
									
										16
									
								
								editors/vi.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								editors/vi.c
									
									
									
									
									
								
							@@ -715,14 +715,6 @@ static int init_text_buffer(char *fn)
 | 
			
		||||
{
 | 
			
		||||
	int rc;
 | 
			
		||||
 | 
			
		||||
	flush_undo_data();
 | 
			
		||||
	modified_count = 0;
 | 
			
		||||
	last_modified_count = -1;
 | 
			
		||||
#if ENABLE_FEATURE_VI_YANKMARK
 | 
			
		||||
	/* init the marks */
 | 
			
		||||
	memset(mark, 0, sizeof(mark));
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	/* allocate/reallocate text buffer */
 | 
			
		||||
	free(text);
 | 
			
		||||
	text_size = 10240;
 | 
			
		||||
@@ -737,6 +729,14 @@ static int init_text_buffer(char *fn)
 | 
			
		||||
		// file doesnt exist. Start empty buf with dummy line
 | 
			
		||||
		char_insert(text, '\n', NO_UNDO);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	flush_undo_data();
 | 
			
		||||
	modified_count = 0;
 | 
			
		||||
	last_modified_count = -1;
 | 
			
		||||
#if ENABLE_FEATURE_VI_YANKMARK
 | 
			
		||||
	/* init the marks */
 | 
			
		||||
	memset(mark, 0, sizeof(mark));
 | 
			
		||||
#endif
 | 
			
		||||
	return rc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user