1121
|
1 "------------------------------------------------------------------------------
|
|
2 " Description: Vim Ada omnicompletion file
|
|
3 " Language: Ada (2005)
|
2034
|
4 " $Id: adacomplete.vim 887 2008-07-08 14:29:01Z krischik $
|
1121
|
5 " Maintainer: Martin Krischik
|
2034
|
6 " $Author: krischik $
|
|
7 " $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
|
1668
|
8 " Version: 4.6
|
2034
|
9 " $Revision: 887 $
|
1668
|
10 " $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $
|
1121
|
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
|
25773
|
17 " 05.11.2006 MK Bram suggested against using setlocal omnifunc
|
1121
|
18 " 05.11.2006 MK Bram suggested to save on spaces
|
|
19 " Help Page: ft-ada-omni
|
|
20 "------------------------------------------------------------------------------
|
|
21
|
|
22 if version < 700
|
|
23 finish
|
|
24 endif
|
|
25
|
|
26 " Section: adacomplete#Complete () {{{1
|
|
27 "
|
|
28 " This function is used for the 'omnifunc' option.
|
|
29 "
|
|
30 function! 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
|
|
99 endfunction adacomplete#Complete
|
|
100
|
|
101 finish " 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
|