aboutsummaryrefslogtreecommitdiff
path: root/vim/plugin
diff options
context:
space:
mode:
Diffstat (limited to 'vim/plugin')
-rw-r--r--vim/plugin/equalalways_resized.vim27
-rw-r--r--vim/plugin/foldlevelstart_stdin.vim28
-rw-r--r--vim/plugin/scroll_next.vim32
-rw-r--r--vim/plugin/wildignore.vim2
4 files changed, 88 insertions, 1 deletions
diff --git a/vim/plugin/equalalways_resized.vim b/vim/plugin/equalalways_resized.vim
new file mode 100644
index 00000000..8865f0af
--- /dev/null
+++ b/vim/plugin/equalalways_resized.vim
@@ -0,0 +1,27 @@
+"
+" equalalways_resized: If 'equalalways' is set, extend it to VimResized
+" events.
+"
+" Author: Tom Ryder <tom@sanctum.geek.nz>
+" License: Same as Vim itself
+"
+if exists('g:loaded_equalalways_resized') || &compatible
+ finish
+endif
+if !has('autocmd') || !has('windows') || !exists('##VimResized')
+ finish
+endif
+let g:loaded_equalalways_resized = 1
+
+" If 'equalalways' is set, rebalance the windows
+function! s:Rebalance() abort
+ if &equalalways
+ wincmd =
+ endif
+endfunction
+
+" Add hook for VimResized event
+augroup equalalways_resized
+ autocmd!
+ autocmd VimResized * call s:Rebalance()
+augroup END
diff --git a/vim/plugin/foldlevelstart_stdin.vim b/vim/plugin/foldlevelstart_stdin.vim
new file mode 100644
index 00000000..f8e4d50e
--- /dev/null
+++ b/vim/plugin/foldlevelstart_stdin.vim
@@ -0,0 +1,28 @@
+"
+" foldlevelstart_stdin.vim: Set 'foldlevel' to 'foldlevelstart' after reading
+" from standard input, which Vim doesn't do by default.
+"
+" Author: Tom Ryder <tom@sanctum.geek.nz>
+" License: Same as Vim itself
+"
+if exists('g:loaded_foldlevelstart_stdin') || &compatible
+ finish
+endif
+if !has('autocmd') || !has('folding') || !exists('##StdinReadPre')
+ finish
+endif
+let g:loaded_foldlevelstart_stdin = 1
+
+" Check if 'foldlevelstart' is non-negative, and set 'foldlevel' to its value
+" if it is
+function! s:SetFoldlevel() abort
+ if &foldlevelstart >= 0
+ let &l:foldlevel = &foldlevelstart
+ endif
+endfunction
+
+" Watch for stdin reads and set fold level accordingly
+augroup foldlevelstart_stdin
+ autocmd!
+ autocmd StdinReadPre * call s:SetFoldlevel()
+augroup END
diff --git a/vim/plugin/scroll_next.vim b/vim/plugin/scroll_next.vim
new file mode 100644
index 00000000..a02a4e4f
--- /dev/null
+++ b/vim/plugin/scroll_next.vim
@@ -0,0 +1,32 @@
+"
+" scroll_next.vim: Mapping to scroll a page forward with CTRL-F until the last
+" line is visible in the buffer (if supported) or the cursor is on the last
+" line, and to run :next instead if so to move to the next buffer in the
+" argument list.
+"
+" Author: Tom Ryder <tom@sanctum.geek.nz>
+" License: Same as Vim itself
+"
+if exists('g:loaded_scroll_next') || &compatible
+ finish
+endif
+if v:version < 600
+ finish
+endif
+let g:loaded_scroll_next = 1
+
+" Check visibility of last line (Vim >=7.0) or cursor presence on last line
+" and flick to :next if appropriate, or just page forward with CTRL-F
+function! s:ScrollNext() abort
+ if line('.') == line('$')
+ \ || line('w$') == line('$')
+ silent! next
+ else
+ execute "normal! \<C-F>"
+ endif
+endfunction
+
+" Mapping setup
+nnoremap <silent> <unique>
+ \ <Plug>(ScrollNext)
+ \ :<C-U>call <SID>ScrollNext()<CR>
diff --git a/vim/plugin/wildignore.vim b/vim/plugin/wildignore.vim
index b10eaa01..a08e0251 100644
--- a/vim/plugin/wildignore.vim
+++ b/vim/plugin/wildignore.vim
@@ -1,7 +1,7 @@
" Don't complete certain files that I'm not likely to want to manipulate from
" within Vim; this is kind of expensive to reload, so I've made it a plugin
" with a load guard
-if v:version < 700 || !has('wildignore')
+if &compatible || v:version < 700 || !has('wildignore')
finish
endif
if exists('g:loaded_wildmenu')