1"------------------------------------------------------------------------------
2"  Description: Vim Ada omnicompletion file
3"     Language:	Ada (2005)
4"	   $Id: adacomplete.vim 887 2008-07-08 14:29:01Z krischik $
5"   Maintainer:	Martin Krischik
6"      $Author: krischik $
7"	 $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
8"      Version: 4.6
9"    $Revision: 887 $
10"     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $
11"      History: 24.05.2006 MK Unified Headers
12"		26.05.2006 MK improved search for begin of word.
13"		16.07.2006 MK Ada-Mode as vim-ball
14"		15.10.2006 MK Bram's suggestion for runtime integration
15"		05.11.2006 MK Bram suggested not to use include protection for
16"			      autoload
17"		05.11.2006 MK Bram suggested against using setlocal omnifunc
18"		05.11.2006 MK Bram suggested to save on spaces
19"    Help Page: ft-ada-omni
20"------------------------------------------------------------------------------
21
22if version < 700
23   finish
24endif
25
26" Section: adacomplete#Complete () {{{1
27"
28" This function is used for the 'omnifunc' option.
29"
30function! adacomplete#Complete (findstart, base)
31   if a:findstart == 1
32      return ada#User_Complete (a:findstart, a:base)
33   else
34      "
35      " look up matches
36      "
37      if exists ("g:ada_omni_with_keywords")
38	 call ada#User_Complete (a:findstart, a:base)
39      endif
40      "
41      "  search tag file for matches
42      "
43      let l:Pattern  = '^' . a:base . '.*$'
44      let l:Tag_List = taglist (l:Pattern)
45      "
46      " add symbols
47      "
48      for Tag_Item in l:Tag_List
49	 if l:Tag_Item['kind'] == ''
50	    "
51	    " Tag created by gnat xref
52	    "
53	    let l:Match_Item = {
54	       \ 'word':  l:Tag_Item['name'],
55	       \ 'menu':  l:Tag_Item['filename'],
56	       \ 'info':  "Symbol from file " . l:Tag_Item['filename'] . " line " . l:Tag_Item['cmd'],
57	       \ 'kind':  's',
58	       \ 'icase': 1}
59	 else
60	    "
61	    " Tag created by ctags
62	    "
63	    let l:Info	= 'Symbol		 : ' . l:Tag_Item['name']  . "\n"
64	    let l:Info .= 'Of type		 : ' . g:ada#Ctags_Kinds[l:Tag_Item['kind']][1]  . "\n"
65	    let l:Info .= 'Defined in File	 : ' . l:Tag_Item['filename'] . "\n"
66
67	    if has_key( l:Tag_Item, 'package')
68	       let l:Info .= 'Package		    : ' . l:Tag_Item['package'] . "\n"
69	       let l:Menu  = l:Tag_Item['package']
70	    elseif has_key( l:Tag_Item, 'separate')
71	       let l:Info .= 'Separate from Package : ' . l:Tag_Item['separate'] . "\n"
72	       let l:Menu  = l:Tag_Item['separate']
73	    elseif has_key( l:Tag_Item, 'packspec')
74	       let l:Info .= 'Package Specification : ' . l:Tag_Item['packspec'] . "\n"
75	       let l:Menu  = l:Tag_Item['packspec']
76	    elseif has_key( l:Tag_Item, 'type')
77	       let l:Info .= 'Datetype		    : ' . l:Tag_Item['type'] . "\n"
78	       let l:Menu  = l:Tag_Item['type']
79	    else
80	       let l:Menu  = l:Tag_Item['filename']
81	    endif
82
83	    let l:Match_Item = {
84	       \ 'word':  l:Tag_Item['name'],
85	       \ 'menu':  l:Menu,
86	       \ 'info':  l:Info,
87	       \ 'kind':  l:Tag_Item['kind'],
88	       \ 'icase': 1}
89	 endif
90	 if complete_add (l:Match_Item) == 0
91	    return []
92	 endif
93	 if complete_check ()
94	    return []
95	 endif
96      endfor
97      return []
98   endif
99endfunction adacomplete#Complete
100
101finish " 1}}}
102
103"------------------------------------------------------------------------------
104"   Copyright (C) 2006	Martin Krischik
105"
106"   Vim is Charityware - see ":help license" or uganda.txt for licence details.
107"------------------------------------------------------------------------------
108" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
109" vim: foldmethod=marker
110