aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vim/after/ftplugin/perl.vim9
-rw-r--r--vim/autoload/perl.vim28
2 files changed, 37 insertions, 0 deletions
diff --git a/vim/after/ftplugin/perl.vim b/vim/after/ftplugin/perl.vim
index e9747aa3..37cd1c08 100644
--- a/vim/after/ftplugin/perl.vim
+++ b/vim/after/ftplugin/perl.vim
@@ -25,3 +25,12 @@ let b:undo_ftplugin = b:undo_ftplugin
\ . '|nunmap <buffer> <LocalLeader>c'
\ . '|nunmap <buffer> <LocalLeader>l'
\ . '|nunmap <buffer> <LocalLeader>t'
+
+" Bump version numbers
+nnoremap <buffer> <LocalLeader>v
+ \ :<C-U>call perl#BumpVersionMinor()<CR>
+nnoremap <buffer> <LocalLeader>V
+ \ :<C-U>call perl#BumpVersionMajor()<CR>
+let b:undo_ftplugin = b:undo_ftplugin
+ \ . '|nunmap <buffer> <LocalLeader>v'
+ \ . '|nunmap <buffer> <LocalLeader>V'
diff --git a/vim/autoload/perl.vim b/vim/autoload/perl.vim
new file mode 100644
index 00000000..ca9b2990
--- /dev/null
+++ b/vim/autoload/perl.vim
@@ -0,0 +1,28 @@
+" Quick-and-dirty version number bumper
+function! perl#BumpVersion(major) abort
+ let l:view = winsaveview()
+ let l:search = @/
+ let l:li = search('\C^our \$VERSION\s*=')
+ if !l:li
+ echomsg 'No version number declaration found'
+ return
+ endif
+ if a:major
+ silent execute "normal! /[0-9]\<CR>\<C-A>"
+ echomsg 'Major version bumped: '.getline('.')
+ else
+ silent execute "normal! $?[0-9]\<CR>\<C-A>"
+ echomsg 'Minor version bumped: '.getline('.')
+ endif
+ let @/ = l:search
+ call winrestview(l:view)
+endfunction
+
+" Explanatory wrappers
+function! perl#BumpVersionMinor() abort
+ call perl#BumpVersion(0)
+endfunction
+
+function! perl#BumpVersionMajor() abort
+ call perl#BumpVersion(1)
+endfunction