19964e468SBram Moolenaar"------------------------------------------------------------------------------ 29964e468SBram Moolenaar" Description: Vim Ada omnicompletion file 39964e468SBram Moolenaar" Language: Ada (2005) 45c73622aSBram Moolenaar" $Id: adacomplete.vim 887 2008-07-08 14:29:01Z krischik $ 59964e468SBram Moolenaar" Maintainer: Martin Krischik 65c73622aSBram Moolenaar" $Author: krischik $ 75c73622aSBram Moolenaar" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ 8c236c16dSBram Moolenaar" Version: 4.6 95c73622aSBram 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 17*6c391a74SBram Moolenaar" 05.11.2006 MK Bram suggested against 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