neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

gnat.vim (5330B)


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