xref: /vim-8.2.3635/runtime/ftplugin/perl.vim (revision cb03397a)
1" Vim filetype plugin file
2" Language:      Perl
3" Maintainer:    vim-perl <[email protected]>
4" Homepage:      http://github.com/vim-perl/vim-perl
5" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
6" Last Change:   2013-07-21
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_]
36
37" The following line changes a global variable but is necessary to make
38" gf and similar commands work.  The change to iskeyword was incorrect.
39" Thanks to Andrew Pimlott for pointing out the problem. If this causes a
40" problem for you, add an after/ftplugin/perl.vim file that contains
41"       set isfname-=:
42set isfname+=:
43set iskeyword+=:
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< 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'
85
86" Restore the saved compatibility options.
87let &cpo = s:save_cpo
88unlet s:save_cpo
89