diff options
Diffstat (limited to 'ftplugin/ada.vim')
| -rw-r--r-- | ftplugin/ada.vim | 214 | 
1 files changed, 214 insertions, 0 deletions
| diff --git a/ftplugin/ada.vim b/ftplugin/ada.vim new file mode 100644 index 00000000..b48fa0c4 --- /dev/null +++ b/ftplugin/ada.vim @@ -0,0 +1,214 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +"------------------------------------------------------------------------------ +"  Description: Perform Ada specific completion & tagging. +"     Language: Ada (2005) +"	   $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $ +"   Maintainer: Martin Krischik <krischik@users.sourceforge.net> +"		Taylor Venable <taylor@metasyntax.net> +"		Neil Bird <neil@fnxweb.com> +"      $Author: krischik $ +"	 $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ +"      Version: 4.6 with patch from David Bürgin +"    $Revision: 887 $ +"     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/ftplugin/ada.vim $ +"      History: 24.05.2006 MK Unified Headers +"		26.05.2006 MK ' should not be in iskeyword. +"		16.07.2006 MK Ada-Mode as vim-ball +"		02.10.2006 MK Better folding. +"		15.10.2006 MK Bram's suggestion for runtime integration +"               05.11.2006 MK Bram suggested not to use include protection for +"                             autoload +"		05.11.2006 MK Bram suggested to save on spaces +"		08.07.2007 TV fix default compiler problems. +"    Help Page: ft-ada-plugin +"------------------------------------------------------------------------------ +" Provides mapping overrides for tag jumping that figure out the current +" Ada object and tag jump to that, not the 'simple' vim word. +" Similarly allows <Ctrl-N> matching of full-length ada entities from tags. +"------------------------------------------------------------------------------ + +" Only do this when not done yet for this buffer +if exists ("b:did_ftplugin") || version < 700 +   finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 45 + +" +" Temporarily set cpoptions to ensure the script loads OK +" +let s:cpoptions = &cpoptions +set cpoptions-=C + +" Section: Comments  {{{1 +" +setlocal comments=O:--,:--\ \  +setlocal commentstring=--\ \ %s +setlocal complete=.,w,b,u,t,i + +" Section: case	     {{{1 +" +setlocal nosmartcase +setlocal ignorecase + +" Section: formatoptions {{{1 +" +setlocal formatoptions+=ron + +" Section: Tagging {{{1 +" +if exists ("g:ada_extended_tagging") +   " Make local tag mappings for this buffer (if not already set) +   if g:ada_extended_tagging == 'jump' +      if mapcheck('<C-]>','n') == '' +	 nnoremap <unique> <buffer> <C-]>    :call ada#Jump_Tag ('', 'tjump')<cr> +      endif +      if mapcheck('g<C-]>','n') == '' +	 nnoremap <unique> <buffer> g<C-]>   :call ada#Jump_Tag ('','stjump')<cr> +      endif +   elseif g:ada_extended_tagging == 'list' +      if mapcheck('<C-]>','n') == '' +	 nnoremap <unique> <buffer> <C-]>    :call ada#List_Tag ()<cr> +      endif +      if mapcheck('g<C-]>','n') == '' +	 nnoremap <unique> <buffer> g<C-]>   :call ada#List_Tag ()<cr> +      endif +   endif +endif + +" Section: Completion {{{1 +" +setlocal completefunc=ada#User_Complete +setlocal omnifunc=adacomplete#Complete + +if exists ("g:ada_extended_completion") +   if mapcheck ('<C-N>','i') == '' +      inoremap <unique> <buffer> <C-N> <C-R>=ada#Completion("\<lt>C-N>")<cr> +   endif +   if mapcheck ('<C-P>','i') == '' +      inoremap <unique> <buffer> <C-P> <C-R>=ada#Completion("\<lt>C-P>")<cr> +   endif +   if mapcheck ('<C-X><C-]>','i') == '' +      inoremap <unique> <buffer> <C-X><C-]> <C-R>=<SID>ada#Completion("\<lt>C-X>\<lt>C-]>")<cr> +   endif +   if mapcheck ('<bs>','i') == '' +      inoremap <silent> <unique> <buffer> <bs> <C-R>=ada#Insert_Backspace ()<cr> +   endif +endif + +" Section: Matchit {{{1 +" +" Only do this when not done yet for this buffer & matchit is used +" +if !exists ("b:match_words")  && +  \ exists ("loaded_matchit") +   " +   " The following lines enable the macros/matchit.vim plugin for +   " Ada-specific extended matching with the % key. +   " +   let s:notend      = '\%(\<end\s\+\)\@<!' +   let b:match_words = +      \ s:notend . '\<if\>:\<elsif\>:\<else\>:\<end\>\s\+\<if\>,' . +      \ s:notend . '\<case\>:\<when\>:\<end\>\s\+\<case\>,' . +      \ '\%(\<while\>.*\|\<for\>.*\|'.s:notend.'\)\<loop\>:\<end\>\s\+\<loop\>,' . +      \ '\%(\<do\>\|\<begin\>\):\<exception\>:\<end\>\s*\%($\|[;A-Z]\),' . +      \ s:notend . '\<record\>:\<end\>\s\+\<record\>' +endif + + +" Section: Compiler {{{1 +" +if ! exists("g:ada_default_compiler") +   if has("vms") +      let g:ada_default_compiler = 'decada' +   else +      let g:ada_default_compiler = 'gnat' +   endif +endif + +if ! exists("current_compiler")			|| +   \ current_compiler != g:ada_default_compiler +   execute "compiler " . g:ada_default_compiler +endif + +" Section: Folding {{{1 +" +if exists("g:ada_folding") +   if g:ada_folding[0] == 'i' +      setlocal foldmethod=indent +      setlocal foldignore=-- +      setlocal foldnestmax=5 +   elseif g:ada_folding[0] == 'g' +      setlocal foldmethod=expr +      setlocal foldexpr=ada#Pretty_Print_Folding(v:lnum) +   elseif g:ada_folding[0] == 's' +      setlocal foldmethod=syntax +   endif +   setlocal tabstop=8 +   setlocal softtabstop=3 +   setlocal shiftwidth=3 +endif + +" Section: Abbrev {{{1 +" +if exists("g:ada_abbrev") +   iabbrev ret	return +   iabbrev proc procedure +   iabbrev pack package +   iabbrev func function +endif + +" Section: Commands, Mapping, Menus {{{1 +" +call ada#Map_Popup ( +   \ 'Tag.List', +   \  'l', +   \ 'call ada#List_Tag ()') +call ada#Map_Popup ( +   \'Tag.Jump', +   \'j', +   \'call ada#Jump_Tag ()') +call ada#Map_Menu ( +   \'Tag.Create File', +   \':AdaTagFile', +   \'call ada#Create_Tags (''file'')') +call ada#Map_Menu ( +   \'Tag.Create Dir', +   \':AdaTagDir', +   \'call ada#Create_Tags (''dir'')') + +call ada#Map_Menu ( +   \'Highlight.Toggle Space Errors', +   \ ':AdaSpaces', +   \'call ada#Switch_Syntax_Option (''space_errors'')') +call ada#Map_Menu ( +   \'Highlight.Toggle Lines Errors', +   \ ':AdaLines', +   \'call ada#Switch_Syntax_Option (''line_errors'')') +call ada#Map_Menu ( +   \'Highlight.Toggle Rainbow Color', +   \ ':AdaRainbow', +   \'call ada#Switch_Syntax_Option (''rainbow_color'')') +call ada#Map_Menu ( +   \'Highlight.Toggle Standard Types', +   \ ':AdaTypes', +   \'call ada#Switch_Syntax_Option (''standard_types'')') + +" 1}}} +" Reset cpoptions +let &cpoptions = s:cpoptions +unlet s:cpoptions + +finish " 1}}} + +"------------------------------------------------------------------------------ +"   Copyright (C) 2006	Martin Krischik +" +"   Vim is Charityware - see ":help license" or uganda.txt for licence details. +"------------------------------------------------------------------------------ +" vim: textwidth=78 nowrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab +" vim: foldmethod=marker + +endif | 
