Update runtime files
diff --git a/runtime/ftplugin/m3build.vim b/runtime/ftplugin/m3build.vim
index 9e1e169..c910eae 100644
--- a/runtime/ftplugin/m3build.vim
+++ b/runtime/ftplugin/m3build.vim
@@ -1,21 +1,20 @@
" Vim filetype plugin file
" Language: Modula-3 Makefile
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2021 April 15
+" Last Change: 2022 June 12
if exists("b:did_ftplugin")
finish
endif
-let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
runtime! ftplugin/m3quake.vim
-if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
- let b:browsefilter = "Modula-3 Makefile (m3makefile m3overrides)\tm3makefile;m3overrides\n" ..
- \ "All Files (*.*)\t*.*\n"
+if (has("gui_win32") || has("gui_gtk")) && exists("b:m3quake_set_browsefilter")
+ let b:browsefilter = "Modula-3 Makefile (m3makefile m3overrides)\tm3makefile;m3overrides\n" ..
+ \ "All Files (*.*)\t*.*\n"
endif
let &cpo = s:cpo_save
diff --git a/runtime/ftplugin/m3quake.vim b/runtime/ftplugin/m3quake.vim
index 627aabd..7762875 100644
--- a/runtime/ftplugin/m3quake.vim
+++ b/runtime/ftplugin/m3quake.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: Modula-3 Quake
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2021 April 15
+" Last Change: 2022 June 12
if exists("b:did_ftplugin")
finish
@@ -15,18 +15,20 @@
setlocal commentstring=%\ %s
setlocal formatoptions-=t formatoptions+=croql
+let b:undo_ftplugin = "setl fo< com< cms<"
+
if exists("loaded_matchit") && !exists("b:match_words")
let b:match_words = '\<\%(proc\|if\|foreach\)\>:\<else\>:\<end\>'
+ let b:undo_ftplugin ..= " | unlet! b:match_words"
endif
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "Modula-3 Quake Source Files (*.quake)\t*.quake\n" ..
\ "All Files (*.*)\t*.*\n"
+ let b:m3quake_set_browsefilter = 1
+ let b:undo_ftplugin ..= " | unlet! b:browsefilter b:m3quake_set_browsefilter"
endif
-let b:undo_ftplugin = "setl fo< com< cms< " ..
- \ "| unlet! b:browsefilter b:match_words"
-
let &cpo = s:cpo_save
unlet s:cpo_save
diff --git a/runtime/ftplugin/modula3.vim b/runtime/ftplugin/modula3.vim
index fc9eb57..1f8ab35 100644
--- a/runtime/ftplugin/modula3.vim
+++ b/runtime/ftplugin/modula3.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: Modula-3
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2021 Apr 08
+" Last Change: 2022 June 12
if exists("b:did_ftplugin")
finish
@@ -14,24 +14,28 @@
setlocal comments=s0:(*,mb:\ ,ex:*)
setlocal commentstring=(*%s*)
setlocal formatoptions-=t formatoptions+=croql
+setlocal suffixesadd+=.m3
+setlocal formatprg=m3pp
+
+let b:undo_ftplugin = "setlocal com< cms< fo< fp< sua<"
if exists("loaded_matchit") && !exists("b:match_words")
let b:match_words = '\<REPEAT\>:\<UNTIL\>,' ..
- \ '\<\%(BEGIN\|CASE\|FOR\|IF\|LOCK\|LOOP\|TRY\|TYPECASE\|WHILE\|WITH\)\>' ..
+ \ '\<\%(BEGIN\|CASE\|FOR\|IF\|LOCK\|LOOP\|TRY\|TYPECASE\|WHILE\|WITH\|RECORD\|OBJECT\)\>' ..
\ ':' ..
- \ '\<\%(ELSIF\|ELSE\|EXCEPT\|FINALLY\)\>\|\%(^\s*\)\@<=\S.*=>' ..
+ \ '\<\%(ELSIF\|ELSE\|EXCEPT\|FINALLY\|METHODS\|OVERRIDES\)\>\|\%(^\s*\)\@<=\S.*=>' ..
\ ':' ..
- \ '\<END\>'
+ \ '\<END\>,' ..
+ \ '(\*:\*),<\*:\*>'
+ let b:undo_ftplugin ..= " | unlet! b:match_words"
endif
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "Modula-3 Source Files (*.m3)\t*.m3\n" ..
\ "All Files (*.*)\t*.*\n"
+ let b:undo_ftplugin ..= " | unlet! b:browsefilter"
endif
-let b:undo_ftplugin = "setl com< cms< fo< " ..
- \ "| unlet! b:browsefilter b:match_words"
-
let &cpo = s:cpo_save
unlet s:cpo_save
diff --git a/runtime/ftplugin/perl.vim b/runtime/ftplugin/perl.vim
index 603ba49..d0bdbc0 100644
--- a/runtime/ftplugin/perl.vim
+++ b/runtime/ftplugin/perl.vim
@@ -3,7 +3,8 @@
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
-" Last Change: 2020 Apr 15
+" License: Vim License (see :help license)
+" Last Change: 2021 Nov 10
if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1
@@ -20,27 +21,36 @@
setlocal comments=:#
setlocal commentstring=#%s
-" Change the browse dialog on Win32 to show mainly Perl-related files
-if has("gui_win32")
- let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" .
- \ "Perl Modules (*.pm)\t*.pm\n" .
- \ "Perl Documentation Files (*.pod)\t*.pod\n" .
- \ "All Files (*.*)\t*.*\n"
-endif
-
" Provided by Ned Konz <ned at bike-nomad dot com>
"---------------------------------------------
setlocal include=\\<\\(use\\\|require\\)\\>
-setlocal includeexpr=substitute(substitute(substitute(v:fname,'::','/','g'),'->\*','',''),'$','.pm','')
+" '+' is removed to support plugins in Catalyst or DBIx::Class
+" where the leading plus indicates a fully-qualified module name.
+setlocal includeexpr=substitute(substitute(substitute(substitute(v:fname,'+','',''),'::','/','g'),'->\*','',''),'$','.pm','')
setlocal define=[^A-Za-z_]
setlocal iskeyword+=:
" The following line changes a global variable but is necessary to make
" gf and similar commands work. Thanks to Andrew Pimlott for pointing
-" out the problem. If this causes a problem for you, add an
-" after/ftplugin/perl.vim file that contains
-" set isfname-=:
+" out the problem.
+let s:old_isfname = &isfname
set isfname+=:
+let s:new_isfname = &isfname
+
+augroup perl_global_options
+ au!
+ exe "au BufEnter * if &filetype == 'perl' | let &isfname = '" . s:new_isfname . "' | endif"
+ exe "au BufLeave * if &filetype == 'perl' | let &isfname = '" . s:old_isfname . "' | endif"
+augroup END
+
+" Undo the stuff we changed.
+let b:undo_ftplugin = "setlocal fo< kp< com< cms< inc< inex< def< isk<" .
+ \ " | let &isfname = '" . s:old_isfname . "'"
+
+if get(g:, 'perl_fold', 0)
+ setlocal foldmethod=syntax
+ let b:undo_ftplugin .= " | setlocal fdm<"
+endif
" Set this once, globally.
if !exists("perlpath")
@@ -74,16 +84,26 @@
else
let &l:path=&l:path.",".perlpath
endif
+
+let b:undo_ftplugin .= " | setlocal pa<"
"---------------------------------------------
-" Undo the stuff we changed.
-let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isk< isf< kp< path<" .
- \ " | unlet! b:browsefilter"
+" Change the browse dialog to show mainly Perl-related files
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+ let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" .
+ \ "Perl Modules (*.pm)\t*.pm\n" .
+ \ "Perl Documentation Files (*.pod)\t*.pod\n" .
+ \ "All Files (*.*)\t*.*\n"
+ let b:undo_ftplugin .= " | unlet! b:browsefilter"
+endif
-" proper matching for matchit plugin
-let b:match_skip = 's:comment\|string\|perlQQ\|perlShellCommand\|perlHereDoc\|perlSubstitution\|perlTranslation\|perlMatch\|perlFormatField'
-let b:match_words = '\<if\>:\<elsif\>:\<else\>'
+" Proper matching for matchit plugin
+if exists("loaded_matchit") && !exists("b:match_words")
+ let b:match_skip = 's:comment\|string\|perlQQ\|perlShellCommand\|perlHereDoc\|perlSubstitution\|perlTranslation\|perlMatch\|perlFormatField'
+ let b:match_words = '\<if\>:\<elsif\>:\<else\>'
+ let b:undo_ftplugin .= " | unlet! b:match_words b:match_skip"
+endif
" Restore the saved compatibility options.
let &cpo = s:save_cpo
-unlet s:save_cpo
+unlet s:save_cpo s:old_isfname s:new_isfname
diff --git a/runtime/ftplugin/pod.vim b/runtime/ftplugin/pod.vim
new file mode 100644
index 0000000..2a905ab
--- /dev/null
+++ b/runtime/ftplugin/pod.vim
@@ -0,0 +1,71 @@
+" Vim filetype plugin file
+" Language: Perl POD format
+" Maintainer: vim-perl <vim-perl@googlegroups.com>
+" Author: Doug Kearns <dougkearns@gmail.com>
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" License: Vim License (see :help license)
+" Last Change: 2021 Oct 19
+
+if exists("b:did_ftplugin")
+ finish
+endif
+
+let s:save_cpo = &cpo
+set cpo-=C
+
+setlocal comments=fb:=for\ comment
+setlocal commentstring==for\ comment\ %s
+
+let b:undo_ftplugin = "setl com< cms<"
+
+if exists("loaded_matchit") && !exists("b:match_words")
+ let b:match_words =
+ \ '^=pod\>:^=cut\>,' .
+ \ '^=begin\s\+\(\S\+\):^=end\s\+\1,' .
+ \ '^=over\>:^=item\>:^=back\>,' .
+ \ '[IBCLEFSXZ]<<\%(\s\+\|$\)\@=:\%(\s\+\|^\)\@<=>>,' .
+ \ '[IBCLEFSXZ]<:>'
+ let b:undo_ftplugin .= " | unlet! b:match_words"
+endif
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+ let b:browsefilter = "POD Source Files (*.pod)\t*.pod\n" .
+ \ "Perl Source Files (*.pl)\t*.pl\n" .
+ \ "Perl Modules (*.pm)\t*.pm\n" .
+ \ "All Files (*.*)\t*.*\n"
+ let b:undo_ftplugin .= " | unlet! b:browsefilter"
+endif
+
+function! s:jumpToSection(backwards)
+ let flags = a:backwards ? 'bsWz' : 'sWz'
+ if has('syntax_items')
+ let skip = "synIDattr(synID(line('.'), col('.'), 1), 'name') !~# '\\<podCommand\\>'"
+ else
+ let skip = ''
+ endif
+ for i in range(v:count1)
+ call search('^=\a', flags, 0, 0, skip)
+ endfor
+endfunction
+
+if !exists("no_plugin_maps") && !exists("no_pod_maps")
+ nnoremap <silent> <buffer> ]] <Cmd>call <SID>jumpToSection()<CR>
+ vnoremap <silent> <buffer> ]] <Cmd>call <SID>jumpToSection()<CR>
+ nnoremap <silent> <buffer> ][ <Cmd>call <SID>jumpToSection()<CR>
+ vnoremap <silent> <buffer> ][ <Cmd>call <SID>jumpToSection()<CR>
+ nnoremap <silent> <buffer> [[ <Cmd>call <SID>jumpToSection(1)<CR>
+ vnoremap <silent> <buffer> [[ <Cmd>call <SID>jumpToSection(1)<CR>
+ nnoremap <silent> <buffer> [] <Cmd>call <SID>jumpToSection(1)<CR>
+ vnoremap <silent> <buffer> [] <Cmd>call <SID>jumpToSection(1)<CR>
+ let b:undo_ftplugin .=
+ \ " | silent! exe 'nunmap <buffer> ]]' | silent! exe 'vunmap <buffer> ]]'" .
+ \ " | silent! exe 'nunmap <buffer> ][' | silent! exe 'vunmap <buffer> ]['" .
+ \ " | silent! exe 'nunmap <buffer> ]]' | silent! exe 'vunmap <buffer> ]]'" .
+ \ " | silent! exe 'nunmap <buffer> []' | silent! exe 'vunmap <buffer> []'"
+endif
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
+
+" vim: set expandtab:
diff --git a/runtime/ftplugin/tap.vim b/runtime/ftplugin/tap.vim
new file mode 100644
index 0000000..c165c0c
--- /dev/null
+++ b/runtime/ftplugin/tap.vim
@@ -0,0 +1,27 @@
+" Vim filetype plugin file
+" Language: Verbose TAP Output
+" Maintainer: vim-perl <vim-perl@googlegroups.com>
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" License: Vim License (see :help license)
+" Last Change: 2021 Oct 22
+
+" Only do this when not done yet for this buffer
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+setlocal foldtext=TAPTestLine_foldtext()
+function! TAPTestLine_foldtext()
+ let line = getline(v:foldstart)
+ let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g')
+ return sub
+endfunction
+
+setlocal foldminlines=5
+setlocal foldcolumn=2
+setlocal foldenable
+setlocal foldmethod=syntax
+
+let b:undo_ftplugin = 'setlocal foldtext< foldminlines< foldcolumn< foldenable< foldmethod<'
diff --git a/runtime/ftplugin/tt2html.vim b/runtime/ftplugin/tt2html.vim
index 10520d8..0407dbb 100644
--- a/runtime/ftplugin/tt2html.vim
+++ b/runtime/ftplugin/tt2html.vim
@@ -1,8 +1,10 @@
+" Vim filetype plugin file
" Language: TT2 embedded with HTML
" Maintainer: vim-perl <vim-perl@googlegroups.com>
-" Homepage: http://github.com/vim-perl/vim-perl
-" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
-" Last Change: 2013-07-21
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" License: Vim License (see :help license)
+" Last Change: 2018 Mar 28
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
diff --git a/runtime/ftplugin/xs.vim b/runtime/ftplugin/xs.vim
index a28da6a..206fbc2 100644
--- a/runtime/ftplugin/xs.vim
+++ b/runtime/ftplugin/xs.vim
@@ -1,9 +1,10 @@
" Vim filetype plugin file
" Language: XS (Perl extension interface language)
" Maintainer: vim-perl <vim-perl@googlegroups.com>
-" Homepage: http://github.com/vim-perl/vim-perl
-" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
-" Last Change: 2013-07-21
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" License: Vim License (see :help license)
+" Last Change: 2018 Mar 28
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")