19964e468SBram Moolenaar"------------------------------------------------------------------------------ 29964e468SBram Moolenaar" Description: Vim Ada omnicompletion file 39964e468SBram Moolenaar" Language: Ada (2005) 4*5c73622aSBram Moolenaar" $Id: adacomplete.vim 887 2008-07-08 14:29:01Z krischik $ 59964e468SBram Moolenaar" Maintainer: Martin Krischik 6*5c73622aSBram Moolenaar" $Author: krischik $ 7*5c73622aSBram Moolenaar" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ 8c236c16dSBram Moolenaar" Version: 4.6 9*5c73622aSBram Moolenaar" $Revision: 887 $ 10c236c16dSBram Moolenaar" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $ 119964e468SBram Moolenaar" History: 24.05.2006 MK Unified Headers 129964e468SBram Moolenaar" 26.05.2006 MK improved search for begin of word. 139964e468SBram Moolenaar" 16.07.2006 MK Ada-Mode as vim-ball 149964e468SBram Moolenaar" 15.10.2006 MK Bram's suggestion for runtime integration 159964e468SBram Moolenaar" 05.11.2006 MK Bram suggested not to use include protection for 169964e468SBram Moolenaar" autoload 179964e468SBram Moolenaar" 05.11.2006 MK Bram suggested agaist using setlocal omnifunc 189964e468SBram Moolenaar" 05.11.2006 MK Bram suggested to save on spaces 199964e468SBram Moolenaar" Help Page: ft-ada-omni 209964e468SBram Moolenaar"------------------------------------------------------------------------------ 219964e468SBram Moolenaar 229964e468SBram Moolenaarif version < 700 239964e468SBram Moolenaar finish 249964e468SBram Moolenaarendif 259964e468SBram Moolenaar 269964e468SBram Moolenaar" Section: adacomplete#Complete () {{{1 279964e468SBram Moolenaar" 289964e468SBram Moolenaar" This function is used for the 'omnifunc' option. 299964e468SBram Moolenaar" 309964e468SBram Moolenaarfunction! adacomplete#Complete (findstart, base) 319964e468SBram Moolenaar if a:findstart == 1 329964e468SBram Moolenaar return ada#User_Complete (a:findstart, a:base) 339964e468SBram Moolenaar else 349964e468SBram Moolenaar " 359964e468SBram Moolenaar " look up matches 369964e468SBram Moolenaar " 379964e468SBram Moolenaar if exists ("g:ada_omni_with_keywords") 389964e468SBram Moolenaar call ada#User_Complete (a:findstart, a:base) 399964e468SBram Moolenaar endif 409964e468SBram Moolenaar " 419964e468SBram Moolenaar " search tag file for matches 429964e468SBram Moolenaar " 439964e468SBram Moolenaar let l:Pattern = '^' . a:base . '.*$' 449964e468SBram Moolenaar let l:Tag_List = taglist (l:Pattern) 459964e468SBram Moolenaar " 469964e468SBram Moolenaar " add symbols 479964e468SBram Moolenaar " 489964e468SBram Moolenaar for Tag_Item in l:Tag_List 499964e468SBram Moolenaar if l:Tag_Item['kind'] == '' 509964e468SBram Moolenaar " 519964e468SBram Moolenaar " Tag created by gnat xref 529964e468SBram Moolenaar " 539964e468SBram Moolenaar let l:Match_Item = { 549964e468SBram Moolenaar \ 'word': l:Tag_Item['name'], 559964e468SBram Moolenaar \ 'menu': l:Tag_Item['filename'], 569964e468SBram Moolenaar \ 'info': "Symbol from file " . l:Tag_Item['filename'] . " line " . l:Tag_Item['cmd'], 579964e468SBram Moolenaar \ 'kind': 's', 589964e468SBram Moolenaar \ 'icase': 1} 599964e468SBram Moolenaar else 609964e468SBram Moolenaar " 619964e468SBram Moolenaar " Tag created by ctags 629964e468SBram Moolenaar " 639964e468SBram Moolenaar let l:Info = 'Symbol : ' . l:Tag_Item['name'] . "\n" 649964e468SBram Moolenaar let l:Info .= 'Of type : ' . g:ada#Ctags_Kinds[l:Tag_Item['kind']][1] . "\n" 659964e468SBram Moolenaar let l:Info .= 'Defined in File : ' . l:Tag_Item['filename'] . "\n" 669964e468SBram Moolenaar 679964e468SBram Moolenaar if has_key( l:Tag_Item, 'package') 689964e468SBram Moolenaar let l:Info .= 'Package : ' . l:Tag_Item['package'] . "\n" 699964e468SBram Moolenaar let l:Menu = l:Tag_Item['package'] 709964e468SBram Moolenaar elseif has_key( l:Tag_Item, 'separate') 719964e468SBram Moolenaar let l:Info .= 'Separate from Package : ' . l:Tag_Item['separate'] . "\n" 729964e468SBram Moolenaar let l:Menu = l:Tag_Item['separate'] 739964e468SBram Moolenaar elseif has_key( l:Tag_Item, 'packspec') 749964e468SBram Moolenaar let l:Info .= 'Package Specification : ' . l:Tag_Item['packspec'] . "\n" 759964e468SBram Moolenaar let l:Menu = l:Tag_Item['packspec'] 769964e468SBram Moolenaar elseif has_key( l:Tag_Item, 'type') 779964e468SBram Moolenaar let l:Info .= 'Datetype : ' . l:Tag_Item['type'] . "\n" 789964e468SBram Moolenaar let l:Menu = l:Tag_Item['type'] 799964e468SBram Moolenaar else 809964e468SBram Moolenaar let l:Menu = l:Tag_Item['filename'] 819964e468SBram Moolenaar endif 829964e468SBram Moolenaar 839964e468SBram Moolenaar let l:Match_Item = { 849964e468SBram Moolenaar \ 'word': l:Tag_Item['name'], 859964e468SBram Moolenaar \ 'menu': l:Menu, 869964e468SBram Moolenaar \ 'info': l:Info, 879964e468SBram Moolenaar \ 'kind': l:Tag_Item['kind'], 889964e468SBram Moolenaar \ 'icase': 1} 899964e468SBram Moolenaar endif 909964e468SBram Moolenaar if complete_add (l:Match_Item) == 0 919964e468SBram Moolenaar return [] 929964e468SBram Moolenaar endif 939964e468SBram Moolenaar if complete_check () 949964e468SBram Moolenaar return [] 959964e468SBram Moolenaar endif 969964e468SBram Moolenaar endfor 979964e468SBram Moolenaar return [] 989964e468SBram Moolenaar endif 999964e468SBram Moolenaarendfunction adacomplete#Complete 1009964e468SBram Moolenaar 1019964e468SBram Moolenaarfinish " 1}}} 1029964e468SBram Moolenaar 1039964e468SBram Moolenaar"------------------------------------------------------------------------------ 1049964e468SBram Moolenaar" Copyright (C) 2006 Martin Krischik 1059964e468SBram Moolenaar" 1069964e468SBram Moolenaar" Vim is Charityware - see ":help license" or uganda.txt for licence details. 1079964e468SBram Moolenaar"------------------------------------------------------------------------------ 1089964e468SBram Moolenaar" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab 1099964e468SBram Moolenaar" vim: foldmethod=marker 110