blob: 5f99450ef153f03f35f86057ca6a21dbb0ff58dc [file] [log] [blame]
Bram Moolenaarc81e5e72007-05-05 18:24:42 +00001"------------------------------------------------------------------------------
2" Description: Vim Ada/GNAT compiler file
3" Language: Ada (GNAT)
4" $Id$
5" Copyright: Copyright (C) 2006 Martin Krischik
6" Maintainer: Martin Krischik
7" $Author$
8" $Date$
9" Version: 4.2
10" $Revision$
11" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/gnat.vim $
12" History: 24.05.2006 MK Unified Headers
13" 16.07.2006 MK Ada-Mode as vim-ball
14" 05.08.2006 MK Add session support
15" 15.10.2006 MK Bram's suggestion for runtime integration
16" 05.11.2006 MK Bram suggested not to use include protection for
17" autoload
18" 05.11.2006 MK Bram suggested to save on spaces
19" Help Page: compiler-gnat
20"------------------------------------------------------------------------------
21
22if version < 700
23 finish
24endif
25
26function gnat#Make () dict " {{{1
27 let &l:makeprg = self.Get_Command('Make')
28 let &l:errorformat = self.Error_Format
29 wall
30 make
31 copen
32 set wrap
33 wincmd W
34endfunction gnat#Make " }}}1
35
36function gnat#Pretty () dict " {{{1
37 execute "!" . self.Get_Command('Pretty')
38endfunction gnat#Make " }}}1
39
40function gnat#Find () dict " {{{1
41 execute "!" . self.Get_Command('Find')
42endfunction gnat#Find " }}}1
43
44function gnat#Tags () dict " {{{1
45 execute "!" . self.Get_Command('Tags')
46 edit tags
47 call gnat#Insert_Tags_Header ()
48 update
49 quit
50endfunction gnat#Tags " }}}1
51
52function gnat#Set_Project_File (...) dict " {{{1
53 if a:0 > 0
54 let self.Project_File = a:1
55
56 if ! filereadable (self.Project_File)
57 let self.Project_File = findfile (
58 \ fnamemodify (self.Project_File, ':r'),
59 \ $ADA_PROJECT_PATH,
60 \ 1)
61 endif
62 elseif strlen (self.Project_File) > 0
63 let self.Project_File = browse (0, 'GNAT Project File?', '', self.Project_File)
64 elseif expand ("%:e") == 'gpr'
65 let self.Project_File = browse (0, 'GNAT Project File?', '', expand ("%:e"))
66 else
67 let self.Project_File = browse (0, 'GNAT Project File?', '', 'default.gpr')
68 endif
69
70 if strlen (v:this_session) > 0
71 execute 'mksession! ' . v:this_session
72 endif
73
74 if strlen (self.Project_File) > 0
75 call ada#Switch_Session (
76 \ expand('~') . "/vimfiles/session/" .
77 \ fnamemodify (self.Project_File, ":t:r") . ".vim")
78 else
79 call ada#Switch_Session ('')
80 endif
81
82 return
83endfunction gnat#Set_Project_File " }}}1
84
85function gnat#Get_Command (Command) dict " {{{1
86 let l:Command = eval ('self.' . a:Command . '_Command')
87 return eval (l:Command)
88endfunction gnat#Get_Command " }}}1
89
90function gnat#Set_Session (...) dict " {{{1
91 if argc() == 1 && fnamemodify (argv(0), ':e') == 'gpr'
92 call self.Set_Project_File (argv(0))
93 elseif strlen (v:servername) > 0
94 call self.Set_Project_File (v:servername . '.gpr')
95 endif
96endfunction gnat#Set_Session " }}}1
97
98function gnat#New () " {{{1
99 let l:Retval = {
100 \ 'Make' : function ('gnat#Make'),
101 \ 'Pretty' : function ('gnat#Pretty'),
102 \ 'Find' : function ('gnat#Find'),
103 \ 'Tags' : function ('gnat#Tags'),
104 \ 'Set_Project_File' : function ('gnat#Set_Project_File'),
105 \ 'Set_Session' : function ('gnat#Set_Session'),
106 \ 'Get_Command' : function ('gnat#Get_Command'),
107 \ 'Project_File' : '',
108 \ 'Make_Command' : '"gnat make -P " . self.Project_File . " -F -gnatef "',
109 \ 'Pretty_Command' : '"gnat pretty -P " . self.Project_File . " "',
110 \ 'Find_Program' : '"gnat find -P " . self.Project_File . " -F "',
111 \ 'Tags_Command' : '"gnat xref -P " . self.Project_File . " -v *.AD*"',
112 \ 'Error_Format' : '%f:%l:%c: %trror: %m,' .
113 \ '%f:%l:%c: %tarning: %m,' .
114 \ '%f:%l:%c: (%ttyle) %m'}
115
116 return l:Retval
117endfunction gnat#New " }}}1
118
119function gnat#Insert_Tags_Header () " {{{1
120 1insert
121!_TAG_FILE_FORMAT 1 /extended format; --format=1 will not append ;" to lines/
122!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
123!_TAG_PROGRAM_AUTHOR AdaCore /info@adacore.com/
124!_TAG_PROGRAM_NAME gnatxref //
125!_TAG_PROGRAM_URL http://www.adacore.com /official site/
126!_TAG_PROGRAM_VERSION 5.05w //
127.
128 return
129endfunction gnat#Insert_Tags_Header " }}}1
130
131finish " 1}}}
132
133"------------------------------------------------------------------------------
134" Copyright (C) 2006 Martin Krischik
135"
136" Vim is Charityware - see ":help license" or uganda.txt for licence details.
137"------------------------------------------------------------------------------
138" vim: textwidth=0 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
139" vim: foldmethod=marker