blob: d7bba93d1201a5f917dd77d64e448776c0c739df [file] [log] [blame]
Bram Moolenaar9964e462007-05-05 17:54:07 +00001"------------------------------------------------------------------------------
2" Description: Vim Ada omnicompletion file
3" Language: Ada (2005)
Bram Moolenaar5c736222010-01-06 20:54:52 +01004" $Id: adacomplete.vim 887 2008-07-08 14:29:01Z krischik $
Bram Moolenaar9964e462007-05-05 17:54:07 +00005" Maintainer: Martin Krischik
Bram Moolenaar5c736222010-01-06 20:54:52 +01006" $Author: krischik $
7" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
Bram Moolenaarc236c162008-07-13 17:41:49 +00008" Version: 4.6
Bram Moolenaar5c736222010-01-06 20:54:52 +01009" $Revision: 887 $
Bram Moolenaarc236c162008-07-13 17:41:49 +000010" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $
Bram Moolenaar9964e462007-05-05 17:54:07 +000011" 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
Bram Moolenaar6c391a72021-09-09 21:55:11 +020017" 05.11.2006 MK Bram suggested against using setlocal omnifunc
Bram Moolenaar9964e462007-05-05 17:54:07 +000018" 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