home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / runtime / autoload / adacomplete.vim < prev    next >
Encoding:
Text File  |  2010-08-14  |  3.6 KB  |  110 lines

  1. "------------------------------------------------------------------------------
  2. "  Description: Vim Ada omnicompletion file
  3. "     Language:    Ada (2005)
  4. "       $Id: adacomplete.vim 887 2008-07-08 14:29:01Z krischik $
  5. "   Maintainer:    Martin Krischik
  6. "      $Author: krischik $
  7. "     $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
  8. "      Version: 4.6
  9. "    $Revision: 887 $
  10. "     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $
  11. "      History: 24.05.2006 MK Unified Headers
  12. "        26.05.2006 MK improved search for begin of word.
  13. "        16.07.2006 MK Ada-Mode as vim-ball
  14. "        15.10.2006 MK Bram's suggestion for runtime integration
  15. "        05.11.2006 MK Bram suggested not to use include protection for
  16. "                  autoload
  17. "        05.11.2006 MK Bram suggested agaist using setlocal omnifunc 
  18. "        05.11.2006 MK Bram suggested to save on spaces
  19. "    Help Page: ft-ada-omni
  20. "------------------------------------------------------------------------------
  21.  
  22. if version < 700
  23.    finish
  24. endif
  25.  
  26. " Section: adacomplete#Complete () {{{1
  27. "
  28. " This function is used for the 'omnifunc' option.
  29. "
  30. function! adacomplete#Complete (findstart, base)
  31.    if a:findstart == 1
  32.       return ada#User_Complete (a:findstart, a:base)
  33.    else
  34.       "
  35.       " look up matches
  36.       "
  37.       if exists ("g:ada_omni_with_keywords")
  38.      call ada#User_Complete (a:findstart, a:base)
  39.       endif
  40.       "
  41.       "  search tag file for matches
  42.       "
  43.       let l:Pattern  = '^' . a:base . '.*$'
  44.       let l:Tag_List = taglist (l:Pattern)
  45.       "
  46.       " add symbols
  47.       "
  48.       for Tag_Item in l:Tag_List
  49.      if l:Tag_Item['kind'] == ''
  50.         "
  51.         " Tag created by gnat xref
  52.         "
  53.         let l:Match_Item = {
  54.            \ 'word':  l:Tag_Item['name'],
  55.            \ 'menu':  l:Tag_Item['filename'],
  56.            \ 'info':  "Symbol from file " . l:Tag_Item['filename'] . " line " . l:Tag_Item['cmd'],
  57.            \ 'kind':  's',
  58.            \ 'icase': 1}
  59.      else
  60.         "
  61.         " Tag created by ctags
  62.         "
  63.         let l:Info    = 'Symbol         : ' . l:Tag_Item['name']  . "\n"
  64.         let l:Info .= 'Of type         : ' . g:ada#Ctags_Kinds[l:Tag_Item['kind']][1]  . "\n"
  65.         let l:Info .= 'Defined in File     : ' . l:Tag_Item['filename'] . "\n"
  66.  
  67.         if has_key( l:Tag_Item, 'package')
  68.            let l:Info .= 'Package            : ' . l:Tag_Item['package'] . "\n"
  69.            let l:Menu  = l:Tag_Item['package']
  70.         elseif has_key( l:Tag_Item, 'separate')
  71.            let l:Info .= 'Separate from Package : ' . l:Tag_Item['separate'] . "\n"
  72.            let l:Menu  = l:Tag_Item['separate']
  73.         elseif has_key( l:Tag_Item, 'packspec')
  74.            let l:Info .= 'Package Specification : ' . l:Tag_Item['packspec'] . "\n"
  75.            let l:Menu  = l:Tag_Item['packspec']
  76.         elseif has_key( l:Tag_Item, 'type')
  77.            let l:Info .= 'Datetype            : ' . l:Tag_Item['type'] . "\n"
  78.            let l:Menu  = l:Tag_Item['type']
  79.         else
  80.            let l:Menu  = l:Tag_Item['filename']
  81.         endif
  82.  
  83.         let l:Match_Item = {
  84.            \ 'word':  l:Tag_Item['name'],
  85.            \ 'menu':  l:Menu,
  86.            \ 'info':  l:Info,
  87.            \ 'kind':  l:Tag_Item['kind'],
  88.            \ 'icase': 1}
  89.      endif
  90.      if complete_add (l:Match_Item) == 0
  91.         return []
  92.      endif
  93.      if complete_check ()
  94.         return []
  95.      endif
  96.       endfor
  97.       return []
  98.    endif
  99. endfunction adacomplete#Complete
  100.  
  101. finish " 1}}}
  102.  
  103. "------------------------------------------------------------------------------
  104. "   Copyright (C) 2006    Martin Krischik
  105. "
  106. "   Vim is Charityware - see ":help license" or uganda.txt for licence details.
  107. "------------------------------------------------------------------------------
  108. " vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
  109. " vim: foldmethod=marker
  110.