1*9964e468SBram Moolenaar"------------------------------------------------------------------------------ 2*9964e468SBram Moolenaar" Description: Vim Ada omnicompletion file 3*9964e468SBram Moolenaar" Language: Ada (2005) 4*9964e468SBram Moolenaar" $Id$ 5*9964e468SBram Moolenaar" Maintainer: Martin Krischik 6*9964e468SBram Moolenaar" $Author$ 7*9964e468SBram Moolenaar" $Date$ 8*9964e468SBram Moolenaar" Version: 4.2 9*9964e468SBram Moolenaar" $Revision$ 10*9964e468SBram Moolenaar" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $ 11*9964e468SBram Moolenaar" History: 24.05.2006 MK Unified Headers 12*9964e468SBram Moolenaar" 26.05.2006 MK improved search for begin of word. 13*9964e468SBram Moolenaar" 16.07.2006 MK Ada-Mode as vim-ball 14*9964e468SBram Moolenaar" 15.10.2006 MK Bram's suggestion for runtime integration 15*9964e468SBram Moolenaar" 05.11.2006 MK Bram suggested not to use include protection for 16*9964e468SBram Moolenaar" autoload 17*9964e468SBram Moolenaar" 05.11.2006 MK Bram suggested agaist using setlocal omnifunc 18*9964e468SBram Moolenaar" 05.11.2006 MK Bram suggested to save on spaces 19*9964e468SBram Moolenaar" Help Page: ft-ada-omni 20*9964e468SBram Moolenaar"------------------------------------------------------------------------------ 21*9964e468SBram Moolenaar 22*9964e468SBram Moolenaarif version < 700 23*9964e468SBram Moolenaar finish 24*9964e468SBram Moolenaarendif 25*9964e468SBram Moolenaar 26*9964e468SBram Moolenaar" Section: adacomplete#Complete () {{{1 27*9964e468SBram Moolenaar" 28*9964e468SBram Moolenaar" This function is used for the 'omnifunc' option. 29*9964e468SBram Moolenaar" 30*9964e468SBram Moolenaarfunction! adacomplete#Complete (findstart, base) 31*9964e468SBram Moolenaar if a:findstart == 1 32*9964e468SBram Moolenaar return ada#User_Complete (a:findstart, a:base) 33*9964e468SBram Moolenaar else 34*9964e468SBram Moolenaar " 35*9964e468SBram Moolenaar " look up matches 36*9964e468SBram Moolenaar " 37*9964e468SBram Moolenaar if exists ("g:ada_omni_with_keywords") 38*9964e468SBram Moolenaar call ada#User_Complete (a:findstart, a:base) 39*9964e468SBram Moolenaar endif 40*9964e468SBram Moolenaar " 41*9964e468SBram Moolenaar " search tag file for matches 42*9964e468SBram Moolenaar " 43*9964e468SBram Moolenaar let l:Pattern = '^' . a:base . '.*$' 44*9964e468SBram Moolenaar let l:Tag_List = taglist (l:Pattern) 45*9964e468SBram Moolenaar " 46*9964e468SBram Moolenaar " add symbols 47*9964e468SBram Moolenaar " 48*9964e468SBram Moolenaar for Tag_Item in l:Tag_List 49*9964e468SBram Moolenaar if l:Tag_Item['kind'] == '' 50*9964e468SBram Moolenaar " 51*9964e468SBram Moolenaar " Tag created by gnat xref 52*9964e468SBram Moolenaar " 53*9964e468SBram Moolenaar let l:Match_Item = { 54*9964e468SBram Moolenaar \ 'word': l:Tag_Item['name'], 55*9964e468SBram Moolenaar \ 'menu': l:Tag_Item['filename'], 56*9964e468SBram Moolenaar \ 'info': "Symbol from file " . l:Tag_Item['filename'] . " line " . l:Tag_Item['cmd'], 57*9964e468SBram Moolenaar \ 'kind': 's', 58*9964e468SBram Moolenaar \ 'icase': 1} 59*9964e468SBram Moolenaar else 60*9964e468SBram Moolenaar " 61*9964e468SBram Moolenaar " Tag created by ctags 62*9964e468SBram Moolenaar " 63*9964e468SBram Moolenaar let l:Info = 'Symbol : ' . l:Tag_Item['name'] . "\n" 64*9964e468SBram Moolenaar let l:Info .= 'Of type : ' . g:ada#Ctags_Kinds[l:Tag_Item['kind']][1] . "\n" 65*9964e468SBram Moolenaar let l:Info .= 'Defined in File : ' . l:Tag_Item['filename'] . "\n" 66*9964e468SBram Moolenaar 67*9964e468SBram Moolenaar if has_key( l:Tag_Item, 'package') 68*9964e468SBram Moolenaar let l:Info .= 'Package : ' . l:Tag_Item['package'] . "\n" 69*9964e468SBram Moolenaar let l:Menu = l:Tag_Item['package'] 70*9964e468SBram Moolenaar elseif has_key( l:Tag_Item, 'separate') 71*9964e468SBram Moolenaar let l:Info .= 'Separate from Package : ' . l:Tag_Item['separate'] . "\n" 72*9964e468SBram Moolenaar let l:Menu = l:Tag_Item['separate'] 73*9964e468SBram Moolenaar elseif has_key( l:Tag_Item, 'packspec') 74*9964e468SBram Moolenaar let l:Info .= 'Package Specification : ' . l:Tag_Item['packspec'] . "\n" 75*9964e468SBram Moolenaar let l:Menu = l:Tag_Item['packspec'] 76*9964e468SBram Moolenaar elseif has_key( l:Tag_Item, 'type') 77*9964e468SBram Moolenaar let l:Info .= 'Datetype : ' . l:Tag_Item['type'] . "\n" 78*9964e468SBram Moolenaar let l:Menu = l:Tag_Item['type'] 79*9964e468SBram Moolenaar else 80*9964e468SBram Moolenaar let l:Menu = l:Tag_Item['filename'] 81*9964e468SBram Moolenaar endif 82*9964e468SBram Moolenaar 83*9964e468SBram Moolenaar let l:Match_Item = { 84*9964e468SBram Moolenaar \ 'word': l:Tag_Item['name'], 85*9964e468SBram Moolenaar \ 'menu': l:Menu, 86*9964e468SBram Moolenaar \ 'info': l:Info, 87*9964e468SBram Moolenaar \ 'kind': l:Tag_Item['kind'], 88*9964e468SBram Moolenaar \ 'icase': 1} 89*9964e468SBram Moolenaar endif 90*9964e468SBram Moolenaar if complete_add (l:Match_Item) == 0 91*9964e468SBram Moolenaar return [] 92*9964e468SBram Moolenaar endif 93*9964e468SBram Moolenaar if complete_check () 94*9964e468SBram Moolenaar return [] 95*9964e468SBram Moolenaar endif 96*9964e468SBram Moolenaar endfor 97*9964e468SBram Moolenaar return [] 98*9964e468SBram Moolenaar endif 99*9964e468SBram Moolenaarendfunction adacomplete#Complete 100*9964e468SBram Moolenaar 101*9964e468SBram Moolenaarfinish " 1}}} 102*9964e468SBram Moolenaar 103*9964e468SBram Moolenaar"------------------------------------------------------------------------------ 104*9964e468SBram Moolenaar" Copyright (C) 2006 Martin Krischik 105*9964e468SBram Moolenaar" 106*9964e468SBram Moolenaar" Vim is Charityware - see ":help license" or uganda.txt for licence details. 107*9964e468SBram Moolenaar"------------------------------------------------------------------------------ 108*9964e468SBram Moolenaar" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab 109*9964e468SBram Moolenaar" vim: foldmethod=marker 110