aboutsummaryrefslogtreecommitdiff
path: root/vim/autoload
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2018-08-15 09:19:57 +1200
committerTom Ryder <tom@sanctum.geek.nz>2018-08-15 09:19:57 +1200
commit259161077e666a77c887bb5beaeeb1c2af6198b0 (patch)
tree3e097be587bf0276069481d05b0ae2a61f0e437b /vim/autoload
parentUse consistent format for local leader mappings (diff)
downloaddotfiles-259161077e666a77c887bb5beaeeb1c2af6198b0.tar.gz
dotfiles-259161077e666a77c887bb5beaeeb1c2af6198b0.zip
Move Perl boilerplate generation to autoload
Diffstat (limited to 'vim/autoload')
-rw-r--r--vim/autoload/perl.vim58
1 files changed, 58 insertions, 0 deletions
diff --git a/vim/autoload/perl.vim b/vim/autoload/perl.vim
new file mode 100644
index 00000000..3b87bb36
--- /dev/null
+++ b/vim/autoload/perl.vim
@@ -0,0 +1,58 @@
+" Function to add boilerplate intelligently
+function! perl#Boilerplate() abort
+
+ " Flag whether the buffer started blank
+ let l:blank = line2byte(line('$') + 1) <= 2
+
+ " This is a .pm file, guess its package name from path
+ if expand('%:e') ==# 'pm'
+
+ let l:match = matchlist(expand('%:p'), '.*/lib/\(.\+\).pm$')
+ if len(l:match)
+ let l:package = substitute(l:match[1], '/', '::', 'g')
+ else
+ let l:package = expand('%:t:r')
+ endif
+
+ " Otherwise, just use 'main'
+ else
+ let l:package = 'main'
+ endif
+
+ " Lines always to add
+ let l:lines = [
+ \ 'package '.l:package.';',
+ \ '',
+ \ 'use strict;',
+ \ 'use warnings;',
+ \ 'use utf8;',
+ \ '',
+ \ 'use 5.006;',
+ \ '',
+ \ 'our $VERSION = ''0.01'';',
+ \ ''
+ \ ]
+
+ " Conditional lines depending on package
+ if l:package ==# 'main'
+ let l:lines = ['#!perl'] + l:lines
+ else
+ let l:lines = l:lines + ['', '1;']
+ endif
+
+ " Add all the lines in the array
+ for l:line in l:lines
+ call append(line('.') - 1, l:line)
+ endfor
+
+ " If we started in a completely empty buffer, delete the current blank line
+ if l:blank
+ delete
+ endif
+
+ " If we added a trailing '1' for a package, move the cursor up two lines
+ if l:package !=# 'main'
+ -2
+ endif
+
+endfunction