aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2019-05-25 17:32:23 +1200
committerTom Ryder <tom@sanctum.geek.nz>2019-05-25 17:32:23 +1200
commitb7fa83df2c41e795b4c704f0ba3a77c6cbccd97e (patch)
tree724f924d3f7f9b5b086b4e79221a72ad84502370
parentMerge branch 'release/v1.1.0' (diff)
parentBump VERSION (diff)
downloadvim-big-file-options-2.0.0.tar.gz (sig)
vim-big-file-options-2.0.0.zip
Merge branch 'release/v2.0.0'v2.0.0
* release/v2.0.0: Remove syntax feature check Remove redundant option existence check Add "abort" attribute to functions Reorder functions; put interfaces on the top Use get() in lieu of verbose pre-7.0 exists() Adjust autocmd definitions Move functions into autoload
-rw-r--r--VERSION2
-rw-r--r--autoload/big_file_options.vim147
-rw-r--r--doc/big_file_options.txt5
-rw-r--r--plugin/big_file_options.vim126
4 files changed, 155 insertions, 125 deletions
diff --git a/VERSION b/VERSION
index 9084fa2..227cea2 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.1.0
+2.0.0
diff --git a/autoload/big_file_options.vim b/autoload/big_file_options.vim
new file mode 100644
index 0000000..4d65bd4
--- /dev/null
+++ b/autoload/big_file_options.vim
@@ -0,0 +1,147 @@
+" If we can use filesize to detect the big file early, we should
+function! big_file_options#CheckPre(filename) abort
+
+ " Try and get filesize, bail out if we can't
+ let size = getfsize(a:filename)
+ if size == -1
+ return
+ endif
+
+ " Set the buffer's big flag to whether the file is verifiably outsize
+ let b:big_file_options_big = size == -2 || size > s:Limit()
+
+ " If we found it's a big file, call the early options set
+ if b:big_file_options_big
+ call s:SetPre()
+ endif
+
+endfunction
+
+" If it's still indeterminate (stdin read?), try to check the buffer size
+" itself
+function! big_file_options#CheckPost() abort
+
+ " The BufReadPre hook couldn't tell how big the file was; we'll examine it
+ " now it's loaded into the buffer instead
+ if !exists('b:big_file_options_big')
+
+ " Test buffer size, bail if that doesn't work either
+ let size = line2byte(line('$') + 1)
+ if size == -1
+ return
+ endif
+
+ " Flag the buffer's oversize status, if it's positive, we'll catch up and
+ " run the early options set now
+ let b:big_file_options_big = size > s:Limit()
+ if b:big_file_options_big
+ call s:SetPre()
+ endif
+
+ endif
+
+ " If the buffer size is verifiably over the threshold, run the late options
+ " set
+ if b:big_file_options_big
+ call s:SetPost()
+ endif
+
+endfunction
+
+" Wrapper function to get the configured size limit, default to 10 MiB
+function! s:Limit() abort
+ let limit = get(g:, 'big_file_options_limit', 10 * 1024 * 1024)
+ return limit
+endfunction
+
+" These options can and should be set as early as possible
+function! s:SetPre() abort
+
+ " These are always set
+ setlocal noswapfile
+ setlocal undolevels=-1
+ if has('persistent_undo')
+ setlocal noundofile
+ endif
+
+ " Decide whether to set readonly options
+ let readonly = get(g:, 'big_file_options_readonly', 1)
+ if readonly
+ setlocal buftype=nowrite
+ setlocal nomodifiable
+ setlocal readonly
+ endif
+endfunction
+
+" These options need to be set later, after the buffer has loaded
+function! s:SetPost() abort
+
+ " Force filetype off
+ setlocal filetype=NONE
+
+ " Disable syntax highlighting if configured
+ let syntax = get(g:, 'big_file_options_syntax', 0)
+ if !syntax
+ setlocal syntax=OFF
+ endif
+
+ " Force maximum syntax columns down if configured
+ let synmaxcol = get(g:, 'big_file_options_synmaxcol', 256)
+ if &synmaxcol > synmaxcol
+ let &l:synmaxcol = synmaxcol
+ endif
+
+ " Tell the user what we've done
+ echomsg 'Big file detected, set appropriate options'
+
+endfunction
+
+" If we can use filesize to detect the big file early, we should
+function! big_file_options#CheckPre(filename) abort
+
+ " Try and get filesize, bail out if we can't
+ let size = getfsize(a:filename)
+ if size == -1
+ return
+ endif
+
+ " Set the buffer's big flag to whether the file is verifiably outsize
+ let b:big_file_options_big = size == -2 || size > s:Limit()
+
+ " If we found it's a big file, call the early options set
+ if b:big_file_options_big
+ call s:SetPre()
+ endif
+
+endfunction
+
+" If it's still indeterminate (stdin read?), try to check the buffer size
+" itself
+function! big_file_options#CheckPost() abort
+
+ " The BufReadPre hook couldn't tell how big the file was; we'll examine it
+ " now it's loaded into the buffer instead
+ if !exists('b:big_file_options_big')
+
+ " Test buffer size, bail if that doesn't work either
+ let size = line2byte(line('$') + 1)
+ if size == -1
+ return
+ endif
+
+ " Flag the buffer's oversize status, if it's positive, we'll catch up and
+ " run the early options set now
+ let b:big_file_options_big = size > s:Limit()
+ if b:big_file_options_big
+ call s:SetPre()
+ endif
+
+ endif
+
+ " If the buffer size is verifiably over the threshold, run the late options
+ " set
+ if b:big_file_options_big
+ call s:SetPost()
+ endif
+
+endfunction
diff --git a/doc/big_file_options.txt b/doc/big_file_options.txt
index 0603dc0..713a6bc 100644
--- a/doc/big_file_options.txt
+++ b/doc/big_file_options.txt
@@ -1,4 +1,4 @@
-*big_file_options.txt* For Vim version 6.0 Last change: 2018 July 7
+*big_file_options.txt* For Vim version 7.0 Last change: 2018 July 7
DESCRIPTION *big_file_options*
@@ -40,8 +40,7 @@ to disable syntax highlighting completely on large files; this defaults to on.
*g:big_file_options_synmaxcol*
Set `g:big_file_options_synmaxcol` to the number of columns for which syntax
highlighting should be done on big files, assuming |g:big_file_options_syntax|
-is enabled. This defaults to 256, and only works if you have the |+synmaxcol|
-feature.
+is enabled. This defaults to 256.
AUTHOR *big_file_options-author*
diff --git a/plugin/big_file_options.vim b/plugin/big_file_options.vim
index bc69e44..cea19ba 100644
--- a/plugin/big_file_options.vim
+++ b/plugin/big_file_options.vim
@@ -8,132 +8,16 @@
if exists('loaded_big_file_options') || &compatible
finish
endif
-if !has('autocmd') || v:version < 600
+if !has('autocmd') || v:version < 700
finish
endif
let loaded_big_file_options = 1
-" Wrapper function to get the configured size limit, default to 10 MiB
-function! s:Limit()
- let limit = exists('g:big_file_options_limit')
- \ ? g:big_file_options_limit
- \ : 10 * 1024 * 1024
- return limit
-endfunction
-
-" If we can use filesize to detect the big file early, we should
-function! s:CheckPre(filename)
-
- " Try and get filesize, bail out if we can't
- let size = getfsize(a:filename)
- if size == -1
- return
- endif
-
- " Set the buffer's big flag to whether the file is verifiably outsize
- let b:big_file_options_big = size == -2 || size > s:Limit()
-
- " If we found it's a big file, call the early options set
- if b:big_file_options_big
- call s:SetPre()
- endif
-
-endfunction
-
-" If it's still indeterminate (stdin read?), try to check the buffer size
-" itself
-function! s:CheckPost()
-
- " The BufReadPre hook couldn't tell how big the file was; we'll examine it
- " now it's loaded into the buffer instead
- if !exists('b:big_file_options_big')
-
- " Test buffer size, bail if that doesn't work either
- let size = line2byte(line('$') + 1)
- if size == -1
- return
- endif
-
- " Flag the buffer's oversize status, if it's positive, we'll catch up and
- " run the early options set now
- let b:big_file_options_big = size > s:Limit()
- if b:big_file_options_big
- call s:SetPre()
- endif
-
- endif
-
- " If the buffer size is verifiably over the threshold, run the late options
- " set
- if b:big_file_options_big
- call s:SetPost()
- endif
-
-endfunction
-
-" These options can and should be set as early as possible
-function! s:SetPre()
-
- " These are always set
- setlocal noswapfile
- setlocal undolevels=-1
- if has('persistent_undo')
- setlocal noundofile
- endif
-
- " Decide whether to set readonly options
- let readonly = exists('g:big_file_options_readonly')
- \ ? g:big_file_options_readonly
- \ : 1
- if readonly
- setlocal buftype=nowrite
- setlocal nomodifiable
- setlocal readonly
- endif
-
-endfunction
-
-" These options need to be set later, after the buffer has loaded
-function! s:SetPost()
-
- " Force filetype off
- setlocal filetype=NONE
-
- " Syntax features
- if has('syntax')
-
- " Disable syntax highlighting if configured
- let syntax = exists('g:big_file_options_syntax')
- \ ? g:big_file_options_syntax
- \ : 0
- if !syntax
- setlocal syntax=OFF
- endif
-
- " Force maximum syntax columns down if configured
- if exists('+synmaxcol')
- let synmaxcol = exists('g:big_file_options_synmaxcol')
- \ ? g:big_file_options_synmaxcol
- \ : 256
- if exists('+synmaxcol') && &synmaxcol > synmaxcol
- let &l:synmaxcol = synmaxcol
- endif
- endif
-
- endif
-
- " Tell the user what we've done
- echomsg 'Big file detected, set appropriate options'
-
-endfunction
-
" Define autocmd for calling to check filesize
augroup big_file_options
autocmd!
- autocmd BufReadPre,StdinReadPre
- \ *
- \ call s:CheckPre(expand('<afile>'))
- autocmd BufReadPost,StdinReadPost
- \ *
- \ call s:CheckPost()
+ autocmd BufReadPre,StdinReadPre *
+ \ call big_file_options#CheckPre(expand('<afile>'))
+ autocmd BufReadPost,StdinReadPost *
+ \ call big_file_options#CheckPost()
augroup end