xref: /vim-8.2.3635/runtime/ftplugin/c.vim (revision 34cc7d8c)
1071d4279SBram Moolenaar" Vim filetype plugin file
2071d4279SBram Moolenaar" Language:	C
3071d4279SBram Moolenaar" Maintainer:	Bram Moolenaar <[email protected]>
4*34cc7d8cSBram Moolenaar" Last Change:	2021 Sep 21
5071d4279SBram Moolenaar
6071d4279SBram Moolenaar" Only do this when not done yet for this buffer
7071d4279SBram Moolenaarif exists("b:did_ftplugin")
8071d4279SBram Moolenaar  finish
9071d4279SBram Moolenaarendif
10071d4279SBram Moolenaar
11071d4279SBram Moolenaar" Don't load another plugin for this buffer
12071d4279SBram Moolenaarlet b:did_ftplugin = 1
13071d4279SBram Moolenaar
14582fd85bSBram Moolenaar" Using line continuation here.
1530abd28fSBram Moolenaarlet s:cpo_save = &cpo
16071d4279SBram Moolenaarset cpo-=C
17071d4279SBram Moolenaar
18560979edSBram Moolenaarlet b:undo_ftplugin = "setl fo< com< ofu< cms< def< inc< | if has('vms') | setl isk< | endif"
19071d4279SBram Moolenaar
20071d4279SBram Moolenaar" Set 'formatoptions' to break comment lines but not other lines,
21071d4279SBram Moolenaar" and insert the comment leader when hitting <CR> or using "o".
22071d4279SBram Moolenaarsetlocal fo-=t fo+=croql
23071d4279SBram Moolenaar
24560979edSBram Moolenaar" These options have the right value as default, but the user may have
25560979edSBram Moolenaar" overruled that.
26560979edSBram Moolenaarsetlocal commentstring& define& include&
27560979edSBram Moolenaar
28e344beadSBram Moolenaar" Set completion with CTRL-X CTRL-O to autoloaded function.
29e344beadSBram Moolenaarif exists('&ofu')
30e344beadSBram Moolenaar  setlocal ofu=ccomplete#Complete
31e344beadSBram Moolenaarendif
32e344beadSBram Moolenaar
33071d4279SBram Moolenaar" Set 'comments' to format dashed lists in comments.
34071d4279SBram Moolenaarsetlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
35071d4279SBram Moolenaar
36071d4279SBram Moolenaar" In VMS C keywords contain '$' characters.
37071d4279SBram Moolenaarif has("vms")
38071d4279SBram Moolenaar  setlocal iskeyword+=$
39071d4279SBram Moolenaarendif
40071d4279SBram Moolenaar
41446cb837SBram Moolenaar" When the matchit plugin is loaded, this makes the % command skip parens and
4201164a65SBram Moolenaar" braces in comments properly.
43*34cc7d8cSBram Moolenaarif !exists("b:match_words")
4401164a65SBram Moolenaar  let b:match_words = '^\s*#\s*if\(\|def\|ndef\)\>:^\s*#\s*elif\>:^\s*#\s*else\>:^\s*#\s*endif\>'
45c95a302aSBram Moolenaar  let b:match_skip = 's:comment\|string\|character\|special'
46*34cc7d8cSBram Moolenaar  let b:undo_ftplugin ..= " | unlet! b:match_skip b:match_words"
47*34cc7d8cSBram Moolenaarendif
48446cb837SBram Moolenaar
49071d4279SBram Moolenaar" Win32 can filter files in the browse dialog
5030b65817SBram Moolenaarif (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
51071d4279SBram Moolenaar  if &ft == "cpp"
52071d4279SBram Moolenaar    let b:browsefilter = "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" .
53071d4279SBram Moolenaar	  \ "C Header Files (*.h)\t*.h\n" .
54071d4279SBram Moolenaar	  \ "C Source Files (*.c)\t*.c\n" .
55071d4279SBram Moolenaar	  \ "All Files (*.*)\t*.*\n"
56d4755bb0SBram Moolenaar  elseif &ft == "ch"
57071d4279SBram Moolenaar    let b:browsefilter = "Ch Source Files (*.ch *.chf)\t*.ch;*.chf\n" .
58071d4279SBram Moolenaar	  \ "C Header Files (*.h)\t*.h\n" .
59071d4279SBram Moolenaar	  \ "C Source Files (*.c)\t*.c\n" .
60071d4279SBram Moolenaar	  \ "All Files (*.*)\t*.*\n"
61071d4279SBram Moolenaar  else
62071d4279SBram Moolenaar    let b:browsefilter = "C Source Files (*.c)\t*.c\n" .
63071d4279SBram Moolenaar	  \ "C Header Files (*.h)\t*.h\n" .
64071d4279SBram Moolenaar	  \ "Ch Source Files (*.ch *.chf)\t*.ch;*.chf\n" .
65071d4279SBram Moolenaar	  \ "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" .
66071d4279SBram Moolenaar	  \ "All Files (*.*)\t*.*\n"
67071d4279SBram Moolenaar  endif
68*34cc7d8cSBram Moolenaar  let b:undo_ftplugin ..= " | unlet! b:browsefilter"
69071d4279SBram Moolenaarendif
7030abd28fSBram Moolenaar
7130abd28fSBram Moolenaarlet &cpo = s:cpo_save
7230abd28fSBram Moolenaarunlet s:cpo_save
73