xref: /vim-8.2.3635/runtime/ftplugin/perl.vim (revision 2c7f8c57)
1071d4279SBram Moolenaar" Vim filetype plugin file
2071d4279SBram Moolenaar" Language:      Perl
3543b7ef7SBram Moolenaar" Maintainer:    vim-perl <[email protected]>
4*2c7f8c57SBram Moolenaar" Homepage:      https://github.com/vim-perl/vim-perl
5*2c7f8c57SBram Moolenaar" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
6*2c7f8c57SBram Moolenaar" Last Change:   2020 Apr 15
7071d4279SBram Moolenaar
8071d4279SBram Moolenaarif exists("b:did_ftplugin") | finish | endif
9071d4279SBram Moolenaarlet b:did_ftplugin = 1
10071d4279SBram Moolenaar
11071d4279SBram Moolenaar" Make sure the continuation lines below do not cause problems in
12071d4279SBram Moolenaar" compatibility mode.
13071d4279SBram Moolenaarlet s:save_cpo = &cpo
14071d4279SBram Moolenaarset cpo-=C
15071d4279SBram Moolenaar
16543b7ef7SBram Moolenaarsetlocal formatoptions-=t
17543b7ef7SBram Moolenaarsetlocal formatoptions+=crqol
18e37d50a5SBram Moolenaarsetlocal keywordprg=perldoc\ -f
19071d4279SBram Moolenaar
20071d4279SBram Moolenaarsetlocal comments=:#
21071d4279SBram Moolenaarsetlocal commentstring=#%s
22071d4279SBram Moolenaar
23071d4279SBram Moolenaar" Change the browse dialog on Win32 to show mainly Perl-related files
24071d4279SBram Moolenaarif has("gui_win32")
25071d4279SBram Moolenaar    let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" .
26071d4279SBram Moolenaar		       \ "Perl Modules (*.pm)\t*.pm\n" .
27071d4279SBram Moolenaar		       \ "Perl Documentation Files (*.pod)\t*.pod\n" .
28071d4279SBram Moolenaar		       \ "All Files (*.*)\t*.*\n"
29071d4279SBram Moolenaarendif
30071d4279SBram Moolenaar
31071d4279SBram Moolenaar" Provided by Ned Konz <ned at bike-nomad dot com>
32071d4279SBram Moolenaar"---------------------------------------------
3383c465c7SBram Moolenaarsetlocal include=\\<\\(use\\\|require\\)\\>
34543b7ef7SBram Moolenaarsetlocal includeexpr=substitute(substitute(substitute(v:fname,'::','/','g'),'->\*','',''),'$','.pm','')
35071d4279SBram Moolenaarsetlocal define=[^A-Za-z_]
3637c64c78SBram Moolenaarsetlocal iskeyword+=:
37071d4279SBram Moolenaar
38071d4279SBram Moolenaar" The following line changes a global variable but is necessary to make
3937c64c78SBram Moolenaar" gf and similar commands work. Thanks to Andrew Pimlott for pointing
4037c64c78SBram Moolenaar" out the problem. If this causes a problem for you, add an
4137c64c78SBram Moolenaar" after/ftplugin/perl.vim file that contains
42071d4279SBram Moolenaar"       set isfname-=:
43071d4279SBram Moolenaarset isfname+=:
44071d4279SBram Moolenaar
45071d4279SBram Moolenaar" Set this once, globally.
46071d4279SBram Moolenaarif !exists("perlpath")
47071d4279SBram Moolenaar    if executable("perl")
48446cb837SBram Moolenaar      try
49071d4279SBram Moolenaar	if &shellxquote != '"'
50071d4279SBram Moolenaar	    let perlpath = system('perl -e "print join(q/,/,@INC)"')
51071d4279SBram Moolenaar	else
52071d4279SBram Moolenaar	    let perlpath = system("perl -e 'print join(q/,/,@INC)'")
53071d4279SBram Moolenaar	endif
54071d4279SBram Moolenaar	let perlpath = substitute(perlpath,',.$',',,','')
55446cb837SBram Moolenaar      catch /E145:/
56446cb837SBram Moolenaar	let perlpath = ".,,"
57446cb837SBram Moolenaar      endtry
58071d4279SBram Moolenaar    else
59071d4279SBram Moolenaar	" If we can't call perl to get its path, just default to using the
60071d4279SBram Moolenaar	" current directory and the directory of the current file.
61071d4279SBram Moolenaar	let perlpath = ".,,"
62071d4279SBram Moolenaar    endif
63071d4279SBram Moolenaarendif
64071d4279SBram Moolenaar
65543b7ef7SBram Moolenaar" Append perlpath to the existing path value, if it is set.  Since we don't
66543b7ef7SBram Moolenaar" use += to do it because of the commas in perlpath, we have to handle the
67543b7ef7SBram Moolenaar" global / local settings, too.
68543b7ef7SBram Moolenaarif &l:path == ""
69543b7ef7SBram Moolenaar    if &g:path == ""
70071d4279SBram Moolenaar        let &l:path=perlpath
71543b7ef7SBram Moolenaar    else
72543b7ef7SBram Moolenaar        let &l:path=&g:path.",".perlpath
73543b7ef7SBram Moolenaar    endif
74543b7ef7SBram Moolenaarelse
75543b7ef7SBram Moolenaar    let &l:path=&l:path.",".perlpath
76543b7ef7SBram Moolenaarendif
77071d4279SBram Moolenaar"---------------------------------------------
78071d4279SBram Moolenaar
79071d4279SBram Moolenaar" Undo the stuff we changed.
8037c64c78SBram Moolenaarlet b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isk< isf< kp< path<" .
81071d4279SBram Moolenaar	    \	      " | unlet! b:browsefilter"
82071d4279SBram Moolenaar
83543b7ef7SBram Moolenaar" proper matching for matchit plugin
84543b7ef7SBram Moolenaarlet b:match_skip = 's:comment\|string\|perlQQ\|perlShellCommand\|perlHereDoc\|perlSubstitution\|perlTranslation\|perlMatch\|perlFormatField'
8537c64c78SBram Moolenaarlet b:match_words = '\<if\>:\<elsif\>:\<else\>'
86543b7ef7SBram Moolenaar
87071d4279SBram Moolenaar" Restore the saved compatibility options.
88071d4279SBram Moolenaarlet &cpo = s:save_cpo
8984f7235bSBram Moolenaarunlet s:save_cpo
90