Partially synced with the branch.
[MacVim.git] / runtime / autoload / adacomplete.vim
blob5e584519e2eb02699135125278e29ace8557cd5c
1 "------------------------------------------------------------------------------
2 "  Description: Vim Ada omnicompletion file
3 "     Language: Ada (2005)
4 "          $Id: adacomplete.vim,v 1.8 2008/08/06 16:44:07 vimboss Exp $
5 "   Maintainer: Martin Krischik
6 "      $Author: vimboss $
7 "        $Date: 2008/08/06 16:44:07 $
8 "      Version: 4.6
9 "    $Revision: 1.8 $
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 agaist using setlocal omnifunc 
18 "               05.11.2006 MK Bram suggested to save on spaces
19 "    Help Page: ft-ada-omni
20 "------------------------------------------------------------------------------
22 if version < 700
23    finish
24 endif
26 " Section: adacomplete#Complete () {{{1
28 " This function is used for the 'omnifunc' option.
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"
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
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
101 finish " 1}}}
103 "------------------------------------------------------------------------------
104 "   Copyright (C) 2006  Martin Krischik
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