1"------------------------------------------------------------------------------ 2" Description: Vim Ada omnicompletion file 3" Language: Ada (2005) 4" $Id: adacomplete.vim 887 2008-07-08 14:29:01Z krischik $ 5" Maintainer: Martin Krischik 6" $Author: krischik $ 7" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ 8" Version: 4.6 9" $Revision: 887 $ 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 against 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 110