123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- "------------------------------------------------------------------------------
- " Description: Vim Ada omnicompletion file
- " Language: Ada (2005)
- " $Id: adacomplete.vim 887 2008-07-08 14:29:01Z krischik $
- " Maintainer: Martin Krischik
- " $Author: krischik $
- " $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
- " Version: 4.6
- " $Revision: 887 $
- " $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $
- " History: 24.05.2006 MK Unified Headers
- " 26.05.2006 MK improved search for begin of word.
- " 16.07.2006 MK Ada-Mode as vim-ball
- " 15.10.2006 MK Bram's suggestion for runtime integration
- " 05.11.2006 MK Bram suggested not to use include protection for
- " autoload
- " 05.11.2006 MK Bram suggested against using setlocal omnifunc
- " 05.11.2006 MK Bram suggested to save on spaces
- " Help Page: ft-ada-omni
- "------------------------------------------------------------------------------
- if version < 700
- finish
- endif
- " Section: adacomplete#Complete () {{{1
- "
- " This function is used for the 'omnifunc' option.
- "
- function! adacomplete#Complete (findstart, base)
- if a:findstart == 1
- return ada#User_Complete (a:findstart, a:base)
- else
- "
- " look up matches
- "
- if exists ("g:ada_omni_with_keywords")
- call ada#User_Complete (a:findstart, a:base)
- endif
- "
- " search tag file for matches
- "
- let l:Pattern = '^' . a:base . '.*$'
- let l:Tag_List = taglist (l:Pattern)
- "
- " add symbols
- "
- for Tag_Item in l:Tag_List
- if l:Tag_Item['kind'] == ''
- "
- " Tag created by gnat xref
- "
- let l:Match_Item = {
- \ 'word': l:Tag_Item['name'],
- \ 'menu': l:Tag_Item['filename'],
- \ 'info': "Symbol from file " . l:Tag_Item['filename'] . " line " . l:Tag_Item['cmd'],
- \ 'kind': 's',
- \ 'icase': 1}
- else
- "
- " Tag created by ctags
- "
- let l:Info = 'Symbol : ' . l:Tag_Item['name'] . "\n"
- let l:Info .= 'Of type : ' . g:ada#Ctags_Kinds[l:Tag_Item['kind']][1] . "\n"
- let l:Info .= 'Defined in File : ' . l:Tag_Item['filename'] . "\n"
- if has_key( l:Tag_Item, 'package')
- let l:Info .= 'Package : ' . l:Tag_Item['package'] . "\n"
- let l:Menu = l:Tag_Item['package']
- elseif has_key( l:Tag_Item, 'separate')
- let l:Info .= 'Separate from Package : ' . l:Tag_Item['separate'] . "\n"
- let l:Menu = l:Tag_Item['separate']
- elseif has_key( l:Tag_Item, 'packspec')
- let l:Info .= 'Package Specification : ' . l:Tag_Item['packspec'] . "\n"
- let l:Menu = l:Tag_Item['packspec']
- elseif has_key( l:Tag_Item, 'type')
- let l:Info .= 'Datetype : ' . l:Tag_Item['type'] . "\n"
- let l:Menu = l:Tag_Item['type']
- else
- let l:Menu = l:Tag_Item['filename']
- endif
- let l:Match_Item = {
- \ 'word': l:Tag_Item['name'],
- \ 'menu': l:Menu,
- \ 'info': l:Info,
- \ 'kind': l:Tag_Item['kind'],
- \ 'icase': 1}
- endif
- if complete_add (l:Match_Item) == 0
- return []
- endif
- if complete_check ()
- return []
- endif
- endfor
- return []
- endif
- endfunction adacomplete#Complete
- finish " 1}}}
- "------------------------------------------------------------------------------
- " Copyright (C) 2006 Martin Krischik
- "
- " Vim is Charityware - see ":help license" or uganda.txt for licence details.
- "------------------------------------------------------------------------------
- " vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
- " vim: foldmethod=marker
|