mirror of
				https://github.com/vim/vim.git
				synced 2025-10-27 09:24:23 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			211 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			211 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| "------------------------------------------------------------------------------
 | |
| "  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
 |