xref: /vim-8.2.3635/runtime/ftplugin/pascal.vim (revision 4c295027)
1071d4279SBram Moolenaar" Vim filetype plugin file
2*4c295027SBram Moolenaar" Language:		Pascal
3*4c295027SBram Moolenaar" Maintainer:		Doug Kearns <[email protected]>
4*4c295027SBram Moolenaar" Previous Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
5*4c295027SBram Moolenaar" Last Change:		2021 Apr 23
6071d4279SBram Moolenaar
7071d4279SBram Moolenaarif exists("b:did_ftplugin") | finish | endif
8071d4279SBram Moolenaarlet b:did_ftplugin = 1
9071d4279SBram Moolenaar
10*4c295027SBram Moolenaarlet s:cpo_save = &cpo
11*4c295027SBram Moolenaarset cpo&vim
128e5af3e5SBram Moolenaar
13*4c295027SBram Moolenaarset comments=s:(*,m:\ ,e:*),s:{,m:\ ,e:}
14*4c295027SBram Moolenaarset commentstring={%s}
15*4c295027SBram Moolenaar
16*4c295027SBram Moolenaarif exists("pascal_delphi")
17*4c295027SBram Moolenaar  set comments+=:///
18071d4279SBram Moolenaarendif
19071d4279SBram Moolenaar
20*4c295027SBram Moolenaarif !exists("pascal_traditional")
21*4c295027SBram Moolenaar  set commentstring=//\ %s
22*4c295027SBram Moolenaar  set comments+=://
23*4c295027SBram Moolenaarendif
24*4c295027SBram Moolenaar
25*4c295027SBram Moolenaarsetlocal formatoptions-=t formatoptions+=croql
26*4c295027SBram Moolenaar
27*4c295027SBram Moolenaarif exists("loaded_matchit")
28*4c295027SBram Moolenaar  let b:match_ignorecase = 1 " (Pascal is case-insensitive)
29*4c295027SBram Moolenaar
30*4c295027SBram Moolenaar  let b:match_words  = '\<\%(asm\|begin\|case\|\%(\%(=\|packed\)\s*\)\@<=\%(class\|object\)\|\%(=\s*\)\@<=interface\|record\|try\)\>'
31*4c295027SBram Moolenaar  let b:match_words .= ':\%(^\s*\)\@<=\%(except\|finally\|else\|otherwise\)\>'
32*4c295027SBram Moolenaar  let b:match_words .= ':\<end\>\.\@!'
33*4c295027SBram Moolenaar
34*4c295027SBram Moolenaar  let b:match_words .= ',\<repeat\>:\<until\>'
35*4c295027SBram Moolenaar  " let b:match_words .= ',\<if\>:\<else\>' " FIXME - else clashing with middle else. It seems like a debatable use anyway.
36*4c295027SBram Moolenaar  let b:match_words .= ',\<unit\>:\<\%(\%(^\s*\)\@<=interface\|implementation\|initialization\|finalization\)\>:\<end\.'
37*4c295027SBram Moolenaarendif
38*4c295027SBram Moolenaar
39*4c295027SBram Moolenaarif (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
40*4c295027SBram Moolenaar  let b:browsefilter = "Pascal Source Files (*.pas *.pp *.inc)\t*.pas;*.pp;*.inc\n" .
41*4c295027SBram Moolenaar		     \ "All Files (*.*)\t*.*\n"
42*4c295027SBram Moolenaarendif
43*4c295027SBram Moolenaar
44*4c295027SBram Moolenaarlet b:undo_ftplugin = "setl fo< cms< com< " ..
45*4c295027SBram Moolenaar		    \ "| unlet! b:browsefilter b:match_words b:match_ignorecase"
46*4c295027SBram Moolenaar
47*4c295027SBram Moolenaarlet &cpo = s:cpo_save
48*4c295027SBram Moolenaarunlet s:cpo_save
49*4c295027SBram Moolenaar
50*4c295027SBram Moolenaar" vim: nowrap sw=2 sts=2 ts=8 noet:
51