diff options
-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 |