xref: /vim-8.2.3635/runtime/ftplugin/ada.vim (revision e0e39175)
19964e468SBram Moolenaar"------------------------------------------------------------------------------
29964e468SBram Moolenaar"  Description: Perform Ada specific completion & tagging.
39964e468SBram Moolenaar"     Language: Ada (2005)
45c73622aSBram Moolenaar"	   $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $
5c236c16dSBram Moolenaar"   Maintainer: Martin Krischik <[email protected]>
6c236c16dSBram Moolenaar"		Taylor Venable <[email protected]>
79964e468SBram Moolenaar"		Neil Bird <[email protected]>
85c73622aSBram Moolenaar"      $Author: krischik $
95c73622aSBram Moolenaar"	 $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
10bf88493cSBram Moolenaar"      Version: 4.6 with patch from David Bürgin
115c73622aSBram Moolenaar"    $Revision: 887 $
12c236c16dSBram Moolenaar"     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/ftplugin/ada.vim $
139964e468SBram Moolenaar"      History: 24.05.2006 MK Unified Headers
149964e468SBram Moolenaar"		26.05.2006 MK ' should not be in iskeyword.
159964e468SBram Moolenaar"		16.07.2006 MK Ada-Mode as vim-ball
169964e468SBram Moolenaar"		02.10.2006 MK Better folding.
179964e468SBram Moolenaar"		15.10.2006 MK Bram's suggestion for runtime integration
189964e468SBram Moolenaar"               05.11.2006 MK Bram suggested not to use include protection for
199964e468SBram Moolenaar"                             autoload
209964e468SBram Moolenaar"		05.11.2006 MK Bram suggested to save on spaces
21c236c16dSBram Moolenaar"		08.07.2007 TV fix default compiler problems.
229964e468SBram Moolenaar"    Help Page: ft-ada-plugin
239964e468SBram Moolenaar"------------------------------------------------------------------------------
24071d4279SBram Moolenaar" Provides mapping overrides for tag jumping that figure out the current
25071d4279SBram Moolenaar" Ada object and tag jump to that, not the 'simple' vim word.
26071d4279SBram Moolenaar" Similarly allows <Ctrl-N> matching of full-length ada entities from tags.
279964e468SBram Moolenaar"------------------------------------------------------------------------------
28071d4279SBram Moolenaar
29071d4279SBram Moolenaar" Only do this when not done yet for this buffer
309964e468SBram Moolenaarif exists ("b:did_ftplugin") || version < 700
31071d4279SBram Moolenaar   finish
32071d4279SBram Moolenaarendif
33071d4279SBram Moolenaar
34071d4279SBram Moolenaar" Don't load another plugin for this buffer
35c236c16dSBram Moolenaarlet b:did_ftplugin = 45
36071d4279SBram Moolenaar
379964e468SBram Moolenaar"
38071d4279SBram Moolenaar" Temporarily set cpoptions to ensure the script loads OK
399964e468SBram Moolenaar"
40071d4279SBram Moolenaarlet s:cpoptions = &cpoptions
419964e468SBram Moolenaarset cpoptions-=C
42071d4279SBram Moolenaar
439964e468SBram Moolenaar" Section: Comments  {{{1
449964e468SBram Moolenaar"
459964e468SBram Moolenaarsetlocal comments=O:--,:--\ \
469964e468SBram Moolenaarsetlocal commentstring=--\ \ %s
479964e468SBram Moolenaarsetlocal complete=.,w,b,u,t,i
48071d4279SBram Moolenaar
49c236c16dSBram Moolenaar" Section: case	     {{{1
50c236c16dSBram Moolenaar"
51c236c16dSBram Moolenaarsetlocal nosmartcase
52c236c16dSBram Moolenaarsetlocal ignorecase
53c236c16dSBram Moolenaar
54c236c16dSBram Moolenaar" Section: formatoptions {{{1
55c236c16dSBram Moolenaar"
56c236c16dSBram Moolenaarsetlocal formatoptions+=ron
57c236c16dSBram Moolenaar
589964e468SBram Moolenaar" Section: Tagging {{{1
599964e468SBram Moolenaar"
609964e468SBram Moolenaarif exists ("g:ada_extended_tagging")
61071d4279SBram Moolenaar   " Make local tag mappings for this buffer (if not already set)
629964e468SBram Moolenaar   if g:ada_extended_tagging == 'jump'
63071d4279SBram Moolenaar      if mapcheck('<C-]>','n') == ''
649964e468SBram Moolenaar	 nnoremap <unique> <buffer> <C-]>    :call ada#Jump_Tag ('', 'tjump')<cr>
65071d4279SBram Moolenaar      endif
66071d4279SBram Moolenaar      if mapcheck('g<C-]>','n') == ''
679964e468SBram Moolenaar	 nnoremap <unique> <buffer> g<C-]>   :call ada#Jump_Tag ('','stjump')<cr>
689964e468SBram Moolenaar      endif
699964e468SBram Moolenaar   elseif g:ada_extended_tagging == 'list'
709964e468SBram Moolenaar      if mapcheck('<C-]>','n') == ''
719964e468SBram Moolenaar	 nnoremap <unique> <buffer> <C-]>    :call ada#List_Tag ()<cr>
729964e468SBram Moolenaar      endif
739964e468SBram Moolenaar      if mapcheck('g<C-]>','n') == ''
749964e468SBram Moolenaar	 nnoremap <unique> <buffer> g<C-]>   :call ada#List_Tag ()<cr>
759964e468SBram Moolenaar      endif
769964e468SBram Moolenaar   endif
77071d4279SBram Moolenaarendif
78071d4279SBram Moolenaar
799964e468SBram Moolenaar" Section: Completion {{{1
809964e468SBram Moolenaar"
819964e468SBram Moolenaarsetlocal completefunc=ada#User_Complete
829964e468SBram Moolenaarsetlocal omnifunc=adacomplete#Complete
839964e468SBram Moolenaar
849964e468SBram Moolenaarif exists ("g:ada_extended_completion")
85071d4279SBram Moolenaar   if mapcheck ('<C-N>','i') == ''
869964e468SBram Moolenaar      inoremap <unique> <buffer> <C-N> <C-R>=ada#Completion("\<lt>C-N>")<cr>
87071d4279SBram Moolenaar   endif
88071d4279SBram Moolenaar   if mapcheck ('<C-P>','i') == ''
899964e468SBram Moolenaar      inoremap <unique> <buffer> <C-P> <C-R>=ada#Completion("\<lt>C-P>")<cr>
90071d4279SBram Moolenaar   endif
91071d4279SBram Moolenaar   if mapcheck ('<C-X><C-]>','i') == ''
929964e468SBram Moolenaar      inoremap <unique> <buffer> <C-X><C-]> <C-R>=<SID>ada#Completion("\<lt>C-X>\<lt>C-]>")<cr>
93071d4279SBram Moolenaar   endif
94071d4279SBram Moolenaar   if mapcheck ('<bs>','i') == ''
959964e468SBram Moolenaar      inoremap <silent> <unique> <buffer> <bs> <C-R>=ada#Insert_Backspace ()<cr>
969964e468SBram Moolenaar   endif
97071d4279SBram Moolenaarendif
98071d4279SBram Moolenaar
999964e468SBram Moolenaar" Section: Matchit {{{1
1009964e468SBram Moolenaar"
101071d4279SBram Moolenaar" Only do this when not done yet for this buffer & matchit is used
1029964e468SBram Moolenaar"
1039964e468SBram Moolenaarif !exists ("b:match_words")  &&
1049964e468SBram Moolenaar  \ exists ("loaded_matchit")
1059964e468SBram Moolenaar   "
106071d4279SBram Moolenaar   " The following lines enable the macros/matchit.vim plugin for
107071d4279SBram Moolenaar   " Ada-specific extended matching with the % key.
1089964e468SBram Moolenaar   "
109071d4279SBram Moolenaar   let s:notend      = '\%(\<end\s\+\)\@<!'
110071d4279SBram Moolenaar   let b:match_words =
111071d4279SBram Moolenaar      \ s:notend . '\<if\>:\<elsif\>:\<else\>:\<end\>\s\+\<if\>,' .
112071d4279SBram Moolenaar      \ s:notend . '\<case\>:\<when\>:\<end\>\s\+\<case\>,' .
113071d4279SBram Moolenaar      \ '\%(\<while\>.*\|\<for\>.*\|'.s:notend.'\)\<loop\>:\<end\>\s\+\<loop\>,' .
114071d4279SBram Moolenaar      \ '\%(\<do\>\|\<begin\>\):\<exception\>:\<end\>\s*\%($\|[;A-Z]\),' .
115071d4279SBram Moolenaar      \ s:notend . '\<record\>:\<end\>\s\+\<record\>'
116071d4279SBram Moolenaarendif
117071d4279SBram Moolenaar
118c236c16dSBram Moolenaar
1199964e468SBram Moolenaar" Section: Compiler {{{1
1209964e468SBram Moolenaar"
121c236c16dSBram Moolenaarif ! exists("g:ada_default_compiler")
122c236c16dSBram Moolenaar   if has("vms")
123c236c16dSBram Moolenaar      let g:ada_default_compiler = 'decada'
124c236c16dSBram Moolenaar   else
125c236c16dSBram Moolenaar      let g:ada_default_compiler = 'gnat'
126c236c16dSBram Moolenaar   endif
127c236c16dSBram Moolenaarendif
128c236c16dSBram Moolenaar
1299964e468SBram Moolenaarif ! exists("current_compiler")			||
1309964e468SBram Moolenaar   \ current_compiler != g:ada_default_compiler
1319964e468SBram Moolenaar   execute "compiler " . g:ada_default_compiler
132071d4279SBram Moolenaarendif
133071d4279SBram Moolenaar
1349964e468SBram Moolenaar" Section: Folding {{{1
1359964e468SBram Moolenaar"
1369964e468SBram Moolenaarif exists("g:ada_folding")
1379964e468SBram Moolenaar   if g:ada_folding[0] == 'i'
1389964e468SBram Moolenaar      setlocal foldmethod=indent
1399964e468SBram Moolenaar      setlocal foldignore=--
1409964e468SBram Moolenaar      setlocal foldnestmax=5
1419964e468SBram Moolenaar   elseif g:ada_folding[0] == 'g'
1429964e468SBram Moolenaar      setlocal foldmethod=expr
1439964e468SBram Moolenaar      setlocal foldexpr=ada#Pretty_Print_Folding(v:lnum)
1449964e468SBram Moolenaar   elseif g:ada_folding[0] == 's'
1459964e468SBram Moolenaar      setlocal foldmethod=syntax
146071d4279SBram Moolenaar   endif
1479964e468SBram Moolenaar   setlocal tabstop=8
1489964e468SBram Moolenaar   setlocal softtabstop=3
1499964e468SBram Moolenaar   setlocal shiftwidth=3
150071d4279SBram Moolenaarendif
151071d4279SBram Moolenaar
1529964e468SBram Moolenaar" Section: Abbrev {{{1
1539964e468SBram Moolenaar"
1549964e468SBram Moolenaarif exists("g:ada_abbrev")
1559964e468SBram Moolenaar   iabbrev ret	return
1569964e468SBram Moolenaar   iabbrev proc procedure
1579964e468SBram Moolenaar   iabbrev pack package
1589964e468SBram Moolenaar   iabbrev func function
159071d4279SBram Moolenaarendif
160071d4279SBram Moolenaar
1619964e468SBram Moolenaar" Section: Commands, Mapping, Menus {{{1
162*e0e39175SBram Moolenaarif !exists(':AdaTagFile')
1639964e468SBram Moolenaar  call ada#Map_Popup (
1649964e468SBram Moolenaar     \ 'Tag.List',
1659964e468SBram Moolenaar     \  'l',
1669964e468SBram Moolenaar     \ 'call ada#List_Tag ()')
1679964e468SBram Moolenaar  call ada#Map_Popup (
1689964e468SBram Moolenaar     \'Tag.Jump',
1699964e468SBram Moolenaar     \'j',
1709964e468SBram Moolenaar     \'call ada#Jump_Tag ()')
1719964e468SBram Moolenaar  call ada#Map_Menu (
1729964e468SBram Moolenaar     \'Tag.Create File',
1739964e468SBram Moolenaar     \':AdaTagFile',
1749964e468SBram Moolenaar     \'call ada#Create_Tags (''file'')')
1759964e468SBram Moolenaar  call ada#Map_Menu (
1769964e468SBram Moolenaar     \'Tag.Create Dir',
1779964e468SBram Moolenaar     \':AdaTagDir',
1789964e468SBram Moolenaar     \'call ada#Create_Tags (''dir'')')
179071d4279SBram Moolenaar
1809964e468SBram Moolenaar  call ada#Map_Menu (
1819964e468SBram Moolenaar     \'Highlight.Toggle Space Errors',
1829964e468SBram Moolenaar     \ ':AdaSpaces',
1839964e468SBram Moolenaar     \'call ada#Switch_Syntax_Option (''space_errors'')')
1849964e468SBram Moolenaar  call ada#Map_Menu (
1859964e468SBram Moolenaar     \'Highlight.Toggle Lines Errors',
1869964e468SBram Moolenaar     \ ':AdaLines',
1879964e468SBram Moolenaar     \'call ada#Switch_Syntax_Option (''line_errors'')')
1889964e468SBram Moolenaar  call ada#Map_Menu (
1899964e468SBram Moolenaar     \'Highlight.Toggle Rainbow Color',
1909964e468SBram Moolenaar     \ ':AdaRainbow',
1919964e468SBram Moolenaar     \'call ada#Switch_Syntax_Option (''rainbow_color'')')
1929964e468SBram Moolenaar  call ada#Map_Menu (
1939964e468SBram Moolenaar     \'Highlight.Toggle Standard Types',
1949964e468SBram Moolenaar     \ ':AdaTypes',
1959964e468SBram Moolenaar     \'call ada#Switch_Syntax_Option (''standard_types'')')
196*e0e39175SBram Moolenaarendif
197071d4279SBram Moolenaar
1989964e468SBram Moolenaar" 1}}}
199071d4279SBram Moolenaar" Reset cpoptions
200071d4279SBram Moolenaarlet &cpoptions = s:cpoptions
201071d4279SBram Moolenaarunlet s:cpoptions
202071d4279SBram Moolenaar
2039964e468SBram Moolenaarfinish " 1}}}
2049964e468SBram Moolenaar
2059964e468SBram Moolenaar"------------------------------------------------------------------------------
2069964e468SBram Moolenaar"   Copyright (C) 2006	Martin Krischik
2079964e468SBram Moolenaar"
2089964e468SBram Moolenaar"   Vim is Charityware - see ":help license" or uganda.txt for licence details.
2099964e468SBram Moolenaar"------------------------------------------------------------------------------
2109964e468SBram Moolenaar" vim: textwidth=78 nowrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
2119964e468SBram Moolenaar" vim: foldmethod=marker
212