Added vim-lastplace

This commit is contained in:
Amir Salihefendic 2019-08-23 10:02:26 +02:00
parent 3aefdbd21a
commit 96e10ed101
5 changed files with 244 additions and 0 deletions

View file

@ -0,0 +1 @@
doc/tags

View file

@ -0,0 +1,22 @@
The MIT License (MIT)
Copyright (c) 2015 - 2017 Greg Dietsche
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -0,0 +1,105 @@
# vim-lastplace v3.1.1
Intelligently reopen files at your last edit position. By default git,
svn, and mercurial commit messages are ignored because you
probably want to type a new message and not re-edit the previous
one.
## Advantages
Advantages over the snippets that can be found around the net include:
* Commit messages automatically start at the beginning of a file. This is important because many version control systems re-use the same file for commit message editing.
* Maximizes Available Context
- Center the cursor vertically after restoring last edit position.
- Keep as much of the file on screen as possible when last edit position is at the end of the file.
* Opens folds if the last edit position is inside a fold.
* Works properly with new file templates and scripts that jump to a specific line in them.
## Installation
You can use [pathogen.vim](https://github.com/tpope/vim-pathogen) or other plugin managers to install and use vim-lastplace.
cd ~/.vim/bundle
git clone git://github.com/farmergreg/vim-lastplace.git
Depending on which Vim package you're using, Vim may be preconfigured with
last-edit-position logic that doesn't work quite as well as vim-lastplace.
If so, you may want to disable that in favor of vim-lastplace. For example,
for Vim as packaged with Git for Windows, you can edit
`C:\Program Files\Git\etc\vimrc` and comment out the "Remember positions in files"
`autocmd BufReadPost *` block.
## Configuration
You can configure what file types to ignore by setting
g:lastplace_ignore in your vimrc. This is a comma separated list.
By default it is set to:
let g:lastplace_ignore = "gitcommit,gitrebase,svn,hgcommit"
You can configure buffer types to ignore by setting
g:lastplace_ignore_buftype in your vimrc. This is a comma separated list.
By default it is set to:
let g:lastplace_ignore_buftype = "quickfix,nofile,help"
Folds are automatically opened when jumping to the last edit position. If you
do not like this behavior you can disable it by putting this in your vimrc:
let g:lastplace_open_folds = 0
## Miscellaneous
This plugin is complete and stable. Please do not be afraid to try it even
if there is very little recent activity in this repository. If you do find
a bug, please submit a pull request that fixes whatever problem you're having.
## Version History
vim-lastplace uses [semver](http://semver.org/) to manage version numbers.
### 3.1.1
- Add 'nofile' and 'help' to lastplace_ignore_buftype. (Issue [#14](https://github.com/farmergreg/vim-lastplace/issues/14))
- Do not jump when a new file is created (Issue [#15](https://github.com/farmergreg/vim-lastplace/issues/15), [#16](https://github.com/farmergreg/vim-lastplace/issues/16))
### 3.1.0
- Add g:lastplace_ignore_buftype setting.
- Update github links from username dietsche to farmergreg.
### 3.0.4
- Add g:lastplace_open_folds option.
### 3.0.3
- Point release for Debian packaging. Changes all http links to https. No code changes.
### 3.0.2
- A fix for files that are smaller than the current screen size (issue #8)
### 3.0.1
- A fix for files with modelines.
### 3.0.0
- Open folds if the last edited area is inside a closed fold.
### 2.0.1
- Add gitrebase filetype to the ignore list.
### 2.0.0
- Center the screen when restoring the cursor position.
- When at the end of a file, keep as much of it on screen as possible.
### 1.0.0
- Initial version.
## About
- Author : Gregory L. Dietsche
- Web Page: https://www.gregd.org/
Get the latest version, submit pull requests, and file bug reports
on GitHub:
- https://github.com/farmergreg/vim-lastplace
If you like this plugin, please star and rate it on these sites:
- [GitHub](https://github.com/farmergreg/vim-lastplace)
- [Vim.org](http://www.vim.org/scripts/script.php?script_id=5090)

View file

@ -0,0 +1,36 @@
*vim-lastplace* Intelligently reopen files where you left off.
Author: Gregory L. Dietsche <https://www.gregd.org/>
License: MIT
Version: 3.1.1
INTRODUCTION *vim-lastplace-introduction*
Intelligently reopen files where you left off. By default git,
svn, and mercurial commit messages are ignored because you
probably want to type a new message and not re-edit the previous
one.
You can configure what file types to ignore by setting
g:lastplace_ignore in your vimrc. This is a comma separated list.
By default it is set to:
let g:lastplace_ignore = "gitcommit,gitrebase,svn,hgcommit"
You can configure buffer types to ignore by setting
g:lastplace_ignore_buftype in your vimrc. This is a comma separated list.
By default it is set to:
let g:lastplace_ignore_buftype = "quickfix,nofile,help"
Folds are automatically opened when jumping to the last edit position. If you
do not like this behavior you can disable it by putting this in your vimrc:
let g:lastplace_open_folds = 0
ABOUT *vim-lastplace-about*
Get the latest version and/or report a bug on GitHub:
https://github.com/farmergreg/vim-lastplace
vim:tw=78:et:ft=help:norl:

View 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