| 
									
										
										
										
											2007-05-05 17:54:07 +00:00
										 |  |  | "------------------------------------------------------------------------------ | 
					
						
							|  |  |  | "  Description: Vim Ada omnicompletion file | 
					
						
							|  |  |  | "     Language:	Ada (2005) | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | "	   $Id: adacomplete.vim 887 2008-07-08 14:29:01Z krischik $ | 
					
						
							| 
									
										
										
										
											2007-05-05 17:54:07 +00:00
										 |  |  | "   Maintainer:	Martin Krischik | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | "      $Author: krischik $ | 
					
						
							|  |  |  | "	 $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | "      Version: 4.6 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | "    $Revision: 887 $ | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | "     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $ | 
					
						
							| 
									
										
										
										
											2007-05-05 17:54:07 +00:00
										 |  |  | "      History: 24.05.2006 MK Unified Headers | 
					
						
							|  |  |  | "		26.05.2006 MK improved search for begin of word. | 
					
						
							|  |  |  | "		16.07.2006 MK Ada-Mode as vim-ball | 
					
						
							|  |  |  | "		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 agaist using setlocal omnifunc  | 
					
						
							|  |  |  | "		05.11.2006 MK Bram suggested to save on spaces | 
					
						
							|  |  |  | "    Help Page: ft-ada-omni | 
					
						
							|  |  |  | "------------------------------------------------------------------------------ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if version < 700 | 
					
						
							|  |  |  |    finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Section: adacomplete#Complete () {{{1 | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " This function is used for the 'omnifunc' option. | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | function! adacomplete#Complete (findstart, base) | 
					
						
							|  |  |  |    if a:findstart == 1 | 
					
						
							|  |  |  |       return ada#User_Complete (a:findstart, a:base) | 
					
						
							|  |  |  |    else | 
					
						
							|  |  |  |       " | 
					
						
							|  |  |  |       " look up matches | 
					
						
							|  |  |  |       " | 
					
						
							|  |  |  |       if exists ("g:ada_omni_with_keywords") | 
					
						
							|  |  |  | 	 call ada#User_Complete (a:findstart, a:base) | 
					
						
							|  |  |  |       endif | 
					
						
							|  |  |  |       " | 
					
						
							|  |  |  |       "  search tag file for matches | 
					
						
							|  |  |  |       " | 
					
						
							|  |  |  |       let l:Pattern  = '^' . a:base . '.*$' | 
					
						
							|  |  |  |       let l:Tag_List = taglist (l:Pattern) | 
					
						
							|  |  |  |       " | 
					
						
							|  |  |  |       " add symbols | 
					
						
							|  |  |  |       " | 
					
						
							|  |  |  |       for Tag_Item in l:Tag_List | 
					
						
							|  |  |  | 	 if l:Tag_Item['kind'] == '' | 
					
						
							|  |  |  | 	    " | 
					
						
							|  |  |  | 	    " Tag created by gnat xref | 
					
						
							|  |  |  | 	    " | 
					
						
							|  |  |  | 	    let l:Match_Item = { | 
					
						
							|  |  |  | 	       \ 'word':  l:Tag_Item['name'], | 
					
						
							|  |  |  | 	       \ 'menu':  l:Tag_Item['filename'], | 
					
						
							|  |  |  | 	       \ 'info':  "Symbol from file " . l:Tag_Item['filename'] . " line " . l:Tag_Item['cmd'], | 
					
						
							|  |  |  | 	       \ 'kind':  's', | 
					
						
							|  |  |  | 	       \ 'icase': 1} | 
					
						
							|  |  |  | 	 else | 
					
						
							|  |  |  | 	    " | 
					
						
							|  |  |  | 	    " Tag created by ctags | 
					
						
							|  |  |  | 	    " | 
					
						
							|  |  |  | 	    let l:Info	= 'Symbol		 : ' . l:Tag_Item['name']  . "\n" | 
					
						
							|  |  |  | 	    let l:Info .= 'Of type		 : ' . g:ada#Ctags_Kinds[l:Tag_Item['kind']][1]  . "\n" | 
					
						
							|  |  |  | 	    let l:Info .= 'Defined in File	 : ' . l:Tag_Item['filename'] . "\n" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	    if has_key( l:Tag_Item, 'package') | 
					
						
							|  |  |  | 	       let l:Info .= 'Package		    : ' . l:Tag_Item['package'] . "\n" | 
					
						
							|  |  |  | 	       let l:Menu  = l:Tag_Item['package'] | 
					
						
							|  |  |  | 	    elseif has_key( l:Tag_Item, 'separate') | 
					
						
							|  |  |  | 	       let l:Info .= 'Separate from Package : ' . l:Tag_Item['separate'] . "\n" | 
					
						
							|  |  |  | 	       let l:Menu  = l:Tag_Item['separate'] | 
					
						
							|  |  |  | 	    elseif has_key( l:Tag_Item, 'packspec') | 
					
						
							|  |  |  | 	       let l:Info .= 'Package Specification : ' . l:Tag_Item['packspec'] . "\n" | 
					
						
							|  |  |  | 	       let l:Menu  = l:Tag_Item['packspec'] | 
					
						
							|  |  |  | 	    elseif has_key( l:Tag_Item, 'type') | 
					
						
							|  |  |  | 	       let l:Info .= 'Datetype		    : ' . l:Tag_Item['type'] . "\n" | 
					
						
							|  |  |  | 	       let l:Menu  = l:Tag_Item['type'] | 
					
						
							|  |  |  | 	    else | 
					
						
							|  |  |  | 	       let l:Menu  = l:Tag_Item['filename'] | 
					
						
							|  |  |  | 	    endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	    let l:Match_Item = { | 
					
						
							|  |  |  | 	       \ 'word':  l:Tag_Item['name'], | 
					
						
							|  |  |  | 	       \ 'menu':  l:Menu, | 
					
						
							|  |  |  | 	       \ 'info':  l:Info, | 
					
						
							|  |  |  | 	       \ 'kind':  l:Tag_Item['kind'], | 
					
						
							|  |  |  | 	       \ 'icase': 1} | 
					
						
							|  |  |  | 	 endif | 
					
						
							|  |  |  | 	 if complete_add (l:Match_Item) == 0 | 
					
						
							|  |  |  | 	    return [] | 
					
						
							|  |  |  | 	 endif | 
					
						
							|  |  |  | 	 if complete_check () | 
					
						
							|  |  |  | 	    return [] | 
					
						
							|  |  |  | 	 endif | 
					
						
							|  |  |  |       endfor | 
					
						
							|  |  |  |       return [] | 
					
						
							|  |  |  |    endif | 
					
						
							|  |  |  | endfunction adacomplete#Complete | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | finish " 1}}} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "------------------------------------------------------------------------------ | 
					
						
							|  |  |  | "   Copyright (C) 2006	Martin Krischik | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | "   Vim is Charityware - see ":help license" or uganda.txt for licence details. | 
					
						
							|  |  |  | "------------------------------------------------------------------------------ | 
					
						
							|  |  |  | " vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab | 
					
						
							|  |  |  | " vim: foldmethod=marker |