blob: 28d68f63dc0d8efda0ba074a660311e61fd177e3 [file] [log] [blame]
Bram Moolenaar9964e462007-05-05 17:54:07 +00001"------------------------------------------------------------------------------
2" Description: Vim Ada omnicompletion file
3" Language: Ada (2005)
4" $Id$
5" Maintainer: Martin Krischik
6" $Author$
7" $Date$
8" Version: 4.2
9" $Revision$
10" $HeadURL: https://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 agaist 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