1" Vim filetype plugin file 2" Language: Perl 3" Maintainer: vim-perl <[email protected]> 4" Homepage: https://github.com/vim-perl/vim-perl 5" Bugs/requests: https://github.com/vim-perl/vim-perl/issues 6" Last Change: 2020 Apr 15 7 8if exists("b:did_ftplugin") | finish | endif 9let b:did_ftplugin = 1 10 11" Make sure the continuation lines below do not cause problems in 12" compatibility mode. 13let s:save_cpo = &cpo 14set cpo-=C 15 16setlocal formatoptions-=t 17setlocal formatoptions+=crqol 18setlocal keywordprg=perldoc\ -f 19 20setlocal comments=:# 21setlocal commentstring=#%s 22 23" Change the browse dialog on Win32 to show mainly Perl-related files 24if has("gui_win32") 25 let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" . 26 \ "Perl Modules (*.pm)\t*.pm\n" . 27 \ "Perl Documentation Files (*.pod)\t*.pod\n" . 28 \ "All Files (*.*)\t*.*\n" 29endif 30 31" Provided by Ned Konz <ned at bike-nomad dot com> 32"--------------------------------------------- 33setlocal include=\\<\\(use\\\|require\\)\\> 34setlocal includeexpr=substitute(substitute(substitute(v:fname,'::','/','g'),'->\*','',''),'$','.pm','') 35setlocal define=[^A-Za-z_] 36setlocal iskeyword+=: 37 38" The following line changes a global variable but is necessary to make 39" gf and similar commands work. Thanks to Andrew Pimlott for pointing 40" out the problem. If this causes a problem for you, add an 41" after/ftplugin/perl.vim file that contains 42" set isfname-=: 43set isfname+=: 44 45" Set this once, globally. 46if !exists("perlpath") 47 if executable("perl") 48 try 49 if &shellxquote != '"' 50 let perlpath = system('perl -e "print join(q/,/,@INC)"') 51 else 52 let perlpath = system("perl -e 'print join(q/,/,@INC)'") 53 endif 54 let perlpath = substitute(perlpath,',.$',',,','') 55 catch /E145:/ 56 let perlpath = ".,," 57 endtry 58 else 59 " If we can't call perl to get its path, just default to using the 60 " current directory and the directory of the current file. 61 let perlpath = ".,," 62 endif 63endif 64 65" Append perlpath to the existing path value, if it is set. Since we don't 66" use += to do it because of the commas in perlpath, we have to handle the 67" global / local settings, too. 68if &l:path == "" 69 if &g:path == "" 70 let &l:path=perlpath 71 else 72 let &l:path=&g:path.",".perlpath 73 endif 74else 75 let &l:path=&l:path.",".perlpath 76endif 77"--------------------------------------------- 78 79" Undo the stuff we changed. 80let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isk< isf< kp< path<" . 81 \ " | unlet! b:browsefilter" 82 83" proper matching for matchit plugin 84let b:match_skip = 's:comment\|string\|perlQQ\|perlShellCommand\|perlHereDoc\|perlSubstitution\|perlTranslation\|perlMatch\|perlFormatField' 85let b:match_words = '\<if\>:\<elsif\>:\<else\>' 86 87" Restore the saved compatibility options. 88let &cpo = s:save_cpo 89unlet s:save_cpo 90