aboutsummaryrefslogtreecommitdiff
path: root/vim/plugin/big_file.vim
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2017-11-04 18:48:22 +1300
committerTom Ryder <tom@sanctum.geek.nz>2017-11-04 18:48:22 +1300
commit63087e57b8b1aa030b431b86f3be533ee20f07dc (patch)
treed9c129817e6e9722bdd8c559dc2f341991b68040 /vim/plugin/big_file.vim
parentMerge branch 'hotfix/v0.6.1' (diff)
parentUpdate dotfiles(7) manual from README.md (diff)
downloaddotfiles-a24ca4fd5b9d7d954475a311d9ae402949884286.tar.gz (sig)
dotfiles-a24ca4fd5b9d7d954475a311d9ae402949884286.zip
Merge branch 'release/v0.7.0'v0.7.0
* release/v0.7.0: (21 commits) Update dotfiles(7) manual from README.md Bump version number Add heading for Vim plugins subsection Update README to mention Vim plugins Rename toggle plugin again, use commands not funcs Add short documentation for new custom plugins Use same comment boilerplate for custom plugins Check 'eval' feature for loading command_typos.vim Wrap detect_background.vim func call in 'silent!' Rename and refactor option toggle plugin Don't suggest mappings in Vim plugin comments Move Vim background detection logic into plugin Specify an install-vim-autoload target Spin 'fo' toggle out into new flag toggler plugin Spin copyable linebreak config into new plugin Spin stable join config out into new plugin Use <Plug> prefix, make space strip configurable Rename a misnamed variable in big_file.vim Rename bigfile plugin to big_file Move trailing space strip config into plugin ...
Diffstat (limited to 'vim/plugin/big_file.vim')
-rw-r--r--vim/plugin/big_file.vim59
1 files changed, 59 insertions, 0 deletions
diff --git a/vim/plugin/big_file.vim b/vim/plugin/big_file.vim
new file mode 100644
index 00000000..ec30158a
--- /dev/null
+++ b/vim/plugin/big_file.vim
@@ -0,0 +1,59 @@
+"
+" big_file.vim: When opening a large file, take some measures to keep things
+" loading quickly.
+"
+" Author: Tom Ryder <tom@sanctum.geek.nz>
+" License: Same as Vim itself
+"
+if has('eval') && has('autocmd')
+
+ " Default threshold is 10 MiB
+ if !exists('g:big_file_size')
+ let g:big_file_size = 10 * 1024 * 1024
+ endif
+
+ " Default to leaving syntax highlighting off
+ if !exists('g:big_file_syntax')
+ let g:big_file_syntax = 0
+ endif
+
+ " Cut 'synmaxcol' down to this or smaller for big files
+ if !exists('g:big_file_synmaxcol')
+ let g:big_file_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:big_file_synmaxcol
+ execute 'setlocal synmaxcol=' . g:big_file_synmaxcol
+ endif
+
+ " Disable syntax highlighting if configured to do so
+ if !g:big_file_syntax
+ setlocal syntax=OFF
+ endif
+
+ endfunction
+
+ " Define autocmd for calling to check filesize
+ augroup big_file_options_bufreadpre
+ autocmd!
+ autocmd BufReadPre * call s:BigFileOptions(expand('<afile>'), g:big_file_size)
+ augroup end
+
+endif