mirror of
				https://github.com/amix/vimrc
				synced 2025-10-31 06:33:35 +08:00 
			
		
		
		
	Added vim-lastplace
This commit is contained in:
		
							
								
								
									
										80
									
								
								sources_non_forked/vim-lastplace/plugin/vim-lastplace.vim
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								sources_non_forked/vim-lastplace/plugin/vim-lastplace.vim
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,80 @@ | ||||
| " ============================================================================ | ||||
| " File:        vim-lastplace.vim | ||||
| " Description: Reopen files where you left off. Configurable. | ||||
| " Author:      Gregory L. Dietsche <vim@gregd.org> | ||||
| " Licence:     MIT | ||||
| " Website:     https://www.gregd.org/ | ||||
| " Version:     3.1.1 | ||||
| " ============================================================================ | ||||
|  | ||||
| if exists("b:loaded_lastplace_plugin") || &cp | ||||
| 	finish | ||||
| endif | ||||
| let b:loaded_lastplace_plugin = 1 | ||||
|  | ||||
| scriptencoding utf-8 | ||||
|  | ||||
| if !exists('g:lastplace_ignore') | ||||
| 	let g:lastplace_ignore = "gitcommit,gitrebase,svn,hgcommit" | ||||
| endif | ||||
|  | ||||
| if !exists('g:lastplace_open_folds') | ||||
| 	let g:lastplace_open_folds = 1 | ||||
| endif | ||||
|  | ||||
| if !exists('g:lastplace_ignore_buftype') | ||||
| 	let g:lastplace_ignore_buftype = "quickfix,nofile,help" | ||||
| endif | ||||
|  | ||||
| fu! s:lastplace() | ||||
| 	if index(split(g:lastplace_ignore_buftype, ","), &buftype) != -1  | ||||
| 		return | ||||
|    	endif | ||||
|  | ||||
| 	if index(split(g:lastplace_ignore, ","), &filetype) != -1 | ||||
| 		return | ||||
| 	endif | ||||
|  | ||||
| 	try | ||||
| 		"if the file does not exist on disk (a new, unsaved file) then do nothing | ||||
| 		if empty(glob(@%)) | ||||
| 			return | ||||
| 		endif | ||||
| 	catch | ||||
| 		return | ||||
| 	endtry | ||||
|  | ||||
| 	if line("'\"") > 0 && line("'\"") <= line("$") | ||||
| 		"if the last edit position is set and is less than the | ||||
| 		"number of lines in this buffer. | ||||
|  | ||||
| 		if line("w$") == line("$") | ||||
| 			"if the last line in the current buffer is | ||||
| 			"also the last line visible in this window | ||||
| 			execute "normal! g`\"" | ||||
|  | ||||
| 		elseif line("$") - line("'\"") > ((line("w$") - line("w0")) / 2) - 1 | ||||
| 			"if we're not at the bottom of the file, center the | ||||
| 			"cursor on the screen after we make the jump | ||||
| 			execute "normal! g`\"zz" | ||||
|  | ||||
| 		else | ||||
| 			"otherwise, show as much context as we can by jumping | ||||
| 			"to the end of the file and then to the mark. If we | ||||
| 			"pressed zz here, there would be blank lines at the | ||||
| 			"bottom of the screen. We intentionally leave the | ||||
| 			"last line blank by pressing <c-e> so the user has a | ||||
| 			"clue that they are near the end of the file. | ||||
| 			execute "normal! \G'\"\<c-e>" | ||||
| 		endif | ||||
| 	endif | ||||
| 	if foldclosed(".") != -1 && g:lastplace_open_folds | ||||
| 		"if we're in a fold, make the current line visible and recenter screen | ||||
| 		execute "normal! zvzz" | ||||
| 	endif | ||||
| endf | ||||
|  | ||||
| augroup lastplace_plugin | ||||
| 	autocmd! | ||||
| 	autocmd BufWinEnter * call s:lastplace() | ||||
| augroup END | ||||
		Reference in New Issue
	
	Block a user
	 Amir Salihefendic
					Amir Salihefendic