Bram Moolenaar | 9964e46 | 2007-05-05 17:54:07 +0000 | [diff] [blame] | 1 | "------------------------------------------------------------------------------ |
| 2 | " Description: Vim Ada omnicompletion file |
| 3 | " Language: Ada (2005) |
Bram Moolenaar | 5c73622 | 2010-01-06 20:54:52 +0100 | [diff] [blame] | 4 | " $Id: adacomplete.vim 887 2008-07-08 14:29:01Z krischik $ |
Bram Moolenaar | 9964e46 | 2007-05-05 17:54:07 +0000 | [diff] [blame] | 5 | " Maintainer: Martin Krischik |
Bram Moolenaar | 5c73622 | 2010-01-06 20:54:52 +0100 | [diff] [blame] | 6 | " $Author: krischik $ |
| 7 | " $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ |
Bram Moolenaar | c236c16 | 2008-07-13 17:41:49 +0000 | [diff] [blame] | 8 | " Version: 4.6 |
Bram Moolenaar | 5c73622 | 2010-01-06 20:54:52 +0100 | [diff] [blame] | 9 | " $Revision: 887 $ |
Bram Moolenaar | c236c16 | 2008-07-13 17:41:49 +0000 | [diff] [blame] | 10 | " $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $ |
Bram Moolenaar | 9964e46 | 2007-05-05 17:54:07 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 6c391a7 | 2021-09-09 21:55:11 +0200 | [diff] [blame] | 17 | " 05.11.2006 MK Bram suggested against using setlocal omnifunc |
Bram Moolenaar | 9964e46 | 2007-05-05 17:54:07 +0000 | [diff] [blame] | 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 |