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