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