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