function! Perl()
" autoindent
set autoindent
set smartindent
" 4 space tabs
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
" show matching brackets
set showmatch
" show line numbers
set number
" check perl code with :make
set makeprg=perl\ -c\ %\ $*
set errorformat=%f:%l:%m
set autowrite
endfunction
" Call Perl() when you open a Perl file
autocmd FileType perl call Perl()
####
" restore defaults (incase I :e or :sp)
set cinkeys&
" don't go to column zero when # is the first thing on the line
set cinkeys-=0#
" restore defaults
set cinwords&
" add Perl-ish keywords
set cinwords+=elsif,foreach,sub,unless,until
set cinoptions&
" I don't rememer these OTTOMH; :help cinoptions to learn more
set cinoptions+=+2s,(1s,u0,m1
set cindent
##
##
" SmartTab wrapper
function! SmartTab()
let col = col('.') - 1
if !col || getline('.')[col - 1] !~ '\k'
return "\"
else
return "\"
endif
endfunction
" turn on SmartTabs
inoremap =SmartTab()
##
##
set statusline=%f%{CurrSubName()}\ %m%h%r\ %=%25(%-17(%l\,%c%V%)\ %p%%%)
set laststatus=2
set maxfuncdepth=250
function! CurrSubName()
let g:subname = ""
let g:subrecurssion = 0
" See if this is a Perl file
let l:firstline = getline(1)
if ( l:firstline =~ '#!.*perl' || l:firstline =~ '^package ' )
call GetSubName(line("."))
endif
return g:subname
endfunction
function! GetSubName(line)
let l:str = getline(a:line)
if l:str =~ '^sub'
let l:str = substitute( l:str, " *{.*", "", "" )
let l:str = substitute( l:str, "sub *", ": ", "" )
let g:subname = l:str
return 1
elseif ( l:str =~ '^}' || l:str =~ '^} *#' ) && g:subrecurssion == 1
return -1
elseif a:line > 2
let g:subrecurssion = g:subrecurssion + 1
if g:subrecurssion < 190
call GetSubName(a:line - 1)
else
let g:subname = ': '
return -1
endif
else
return -1
endif
endfunction
##
##
map !! :!perl -c %
map ## :s/^/#/
map !# :s/^#//