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