diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2017-11-02 14:34:09 +1300 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2017-11-02 14:34:09 +1300 |
commit | b54b01202a3f867bec3cc5b4ca7126a6801176ed (patch) | |
tree | 0ecee46b27d19a8dc5c759eaf1fee20daed298ad | |
parent | Merge branch 'hotfix/v0.3.2' (diff) | |
parent | Add vim/plugin to lint-vim arguments (diff) | |
download | dotfiles-b54b01202a3f867bec3cc5b4ca7126a6801176ed.tar.gz dotfiles-b54b01202a3f867bec3cc5b4ca7126a6801176ed.zip |
Merge branch 'release/v0.4.0'v0.4.0
* release/v0.4.0:
Add vim/plugin to lint-vim arguments
Bump version number to 0.4.0
Have bigfileturn local syntax off (configurably)
Make bigfile 'synmaxcol' setting configurable
Refactor plugin function for dependency injection
Rename variable and autocmd to use plugin prefix
Make bigfile size variable an option with default
Expand comment header for bigfile.vim
Move Vim big file options config into plugin
Move 'tildeop' setting to new case.vim file
Move 'shellpipe' setting to more logical location
Make 'shellslash' setting conditional on feature
-rw-r--r-- | Makefile | 12 | ||||
-rw-r--r-- | VERSION | 4 | ||||
-rw-r--r-- | lint/vim.sh | 1 | ||||
-rw-r--r-- | vim/command.vim | 39 | ||||
-rw-r--r-- | vim/config/bigfile.vim | 28 | ||||
-rw-r--r-- | vim/config/case.vim (renamed from vim/config/tildeop.vim) | 0 | ||||
-rw-r--r-- | vim/config/command.vim | 3 | ||||
-rw-r--r-- | vim/config/term.vim | 3 | ||||
-rw-r--r-- | vim/doc/bigfile.txt | 12 | ||||
-rw-r--r-- | vim/plugin/bigfile.vim | 60 |
10 files changed, 128 insertions, 34 deletions
@@ -474,9 +474,11 @@ install-urxvt: urxvt/ext/select install-vim: install-vim-after \ install-vim-bundle \ install-vim-config \ + install-vim-doc \ install-vim-ftdetect \ install-vim-ftplugin \ - install-vim-indent + install-vim-indent \ + install-vim-plugin install-vim-after: find vim/after -name .git -prune -o \ @@ -493,6 +495,10 @@ install-vim-config: cp -p -- vim/vimrc $(HOME)/.vimrc cp -p -- vim/config/*.vim $(HOME)/.vim/config +install-vim-doc: + mkdir -p -- $(HOME)/.vim/doc + cp -p -- vim/doc/*.txt $(HOME)/.vim/doc + install-vim-ftdetect: mkdir -p -- $(HOME)/.vim/ftdetect cp -p -- vim/ftdetect/*.vim $(HOME)/.vim/ftdetect @@ -505,6 +511,10 @@ install-vim-indent: mkdir -p -- $(HOME)/.vim/indent cp -p -- vim/indent/*.vim $(HOME)/.vim/indent +install-vim-plugin: + mkdir -p -- $(HOME)/.vim/plugin + cp -p -- vim/plugin/*.vim $(HOME)/.vim/plugin + install-vim-gui: install-vim \ install-vim-gui-config @@ -1,2 +1,2 @@ -tejr dotfiles v0.3.2 -Wed Nov 1 13:11:51 NZDT 2017 +tejr dotfiles v0.4.0 +Thu Nov 2 14:31:35 NZDT 2017 diff --git a/lint/vim.sh b/lint/vim.sh index d876d770..c370e177 100644 --- a/lint/vim.sh +++ b/lint/vim.sh @@ -5,6 +5,7 @@ set -- \ vim/ftplugin \ vim/gvimrc \ vim/indent \ + vim/plugin \ vim/vimrc vint -s -- "$@" || exit printf 'Vim configuration linted successfully.\n' diff --git a/vim/command.vim b/vim/command.vim new file mode 100644 index 00000000..af7c8e36 --- /dev/null +++ b/vim/command.vim @@ -0,0 +1,39 @@ +" Keep plenty of command and search history, because disk space is cheap +set history=2000 + +" Always tell me the number of lines changed by a command +set report=0 + +" Command-line based features +if has('cmdline_info') + + " Show my current position in the status bar + set ruler + + " Show the keystrokes being entered in the screen + set showcmd + + " Show the mode we're using if not normal mode (e.g. --INSERT--) + set showmode +endif + +" Always use forward slashes, I very seldom need to use Vim on Windows for +" more than scratch space anyway +if exists('+shellslash') + set shellslash +endif + +" Tolerate typos like :Wq, :Q, or :Qa and do what I mean, including any +" arguments or modifiers; I fat-finger these commands a lot because I type +" them so rapidly, and they don't correspond to any other commands I use +if has('user_commands') + command! -bang -complete=file -nargs=? E e<bang> <args> + command! -bang -complete=file -nargs=? W w<bang> <args> + command! -bang -complete=file -nargs=? WQ wq<bang> <args> + command! -bang -complete=file -nargs=? Wq wq<bang> <args> + command! -bang Q q<bang> + command! -bang Qa qa<bang> + command! -bang QA qa<bang> + command! -bang Wa wa<bang> + command! -bang WA wa<bang> +endif diff --git a/vim/config/bigfile.vim b/vim/config/bigfile.vim deleted file mode 100644 index 5c68b1a7..00000000 --- a/vim/config/bigfile.vim +++ /dev/null @@ -1,28 +0,0 @@ -" When opening a large file, take some measures to keep things loading quickly -if has('eval') && has('autocmd') - - " Threshold is 10 MiB - let g:big_file_size = 10 * 1024 * 1024 - - " Declare function for turning off slow options - function! s:BigFileMeasures() - let l:file = expand('<afile>') - if getfsize(l:file) > g:big_file_size - setlocal nobackup - setlocal nowritebackup - setlocal noswapfile - if has('persistent_undo') - setlocal noundofile - endif - if exists('&synmaxcol') - setlocal synmaxcol=256 - endif - endif - endfunction - - " Define autocmd for calling to check filesize - augroup dotfiles_big_file_measures - autocmd! - autocmd BufReadPre * call s:BigFileMeasures() - augroup end -endif diff --git a/vim/config/tildeop.vim b/vim/config/case.vim index bb21aefd..bb21aefd 100644 --- a/vim/config/tildeop.vim +++ b/vim/config/case.vim diff --git a/vim/config/command.vim b/vim/config/command.vim index a7389cfb..1d2b647a 100644 --- a/vim/config/command.vim +++ b/vim/config/command.vim @@ -17,6 +17,9 @@ if has('cmdline_info') set showmode endif +" Don't write the output of :make to the terminal +set shellpipe=> + " Always use forward slashes, I very seldom need to use Vim on Windows for " more than scratch space anyway set shellslash diff --git a/vim/config/term.vim b/vim/config/term.vim index f368e481..8dbda431 100644 --- a/vim/config/term.vim +++ b/vim/config/term.vim @@ -22,6 +22,3 @@ set timeoutlen=1000 " correctly; I don't use Escape as a meta key anyway set ttimeout set ttimeoutlen=50 - -" Don't write the output of :make to the terminal -set shellpipe=> diff --git a/vim/doc/bigfile.txt b/vim/doc/bigfile.txt new file mode 100644 index 00000000..d7e56f28 --- /dev/null +++ b/vim/doc/bigfile.txt @@ -0,0 +1,12 @@ +*bigfile.txt* Disable slow options for big files to speed things up + +Author: Tom Ryder <tom@sanctum.geek.nz> +License: Same terms as Vim itself (see |license|) + +This plugin adds an |autocmd| hook to check the file size of an incoming +buffer, and if it's over a certain threshold, disables certain options in order +to make the file a bit easier to edit. + +This plugin lives in Tom Ryder's "dotfiles" suite, and will eventually be spun +off into a separate distribution as it solidifies and this documentation +improves. diff --git a/vim/plugin/bigfile.vim b/vim/plugin/bigfile.vim new file mode 100644 index 00000000..fece3d9b --- /dev/null +++ b/vim/plugin/bigfile.vim @@ -0,0 +1,60 @@ +" +" bigfile.vim: When opening a large file, take some measures to keep things +" loading quickly. +" +" Author: Tom Ryder <tom@sanctum.geek.nz> +" Copyright: 2017 +" License: Same as Vim itself +" +if has('eval') && has('autocmd') + + " Default threshold is 10 MiB + if !exists('g:bigfile_size') + let g:bigfile_size = 10 * 1024 * 1024 + endif + + " Default to leaving syntax highlighting off + if !exists('g:bigfile_syntax') + let g:bigfile_syntax = 0 + endif + + " Cut 'synmaxcol' down to this or smaller for big files + if !exists('g:bigfile_size_synmaxcol') + let g:bigfile_size_synmaxcol = 256 + endif + + " Declare function for turning off slow options + function! s:BigFileOptions(name, size) + + " Don't do anything if the file is under the threshold + if getfsize(a:name) <= a:size + return + endif + + " Turn off backups, swap files, and undo files + setlocal nobackup + setlocal nowritebackup + setlocal noswapfile + if has('persistent_undo') + setlocal noundofile + endif + + " Limit the number of columns of syntax highlighting + if exists('&synmaxcol') && &synmaxcol > g:bigfile_size_synmaxcol + execute 'setlocal synmaxcol=' . g:bigfile_size_synmaxcol + endif + + " Disable syntax highlighting if configured to do so + if !g:bigfile_syntax + setlocal syntax=OFF + endif + + endfunction + + " Define autocmd for calling to check filesize + augroup bigfile_options_bufreadpre + autocmd! + autocmd BufReadPre * call s:BigFileOptions(expand('<afile>'), g:bigfile_size) + augroup end + +endif |