[gps-users] Small script to enable call to Makefiles from GPS.
Per Sandberg
per.sandberg at bredband.net
Sun Jan 1 22:36:34 CET 2006
Ether the user config dir:
On linux
~/.gps/plug-in
On windows
%HOME%/.gps/plug-in
Or the system coinfig dir
$GPS_ROOT/share/gps/plug-ins
/Per
Chris Sparks wrote:
> What directory is it?
>
> Thanks,
> Chris
>
> Per Sandberg wrote:
>
>> This small script will enable calling to makefiles from the menus in
>> GPS.
>> To enable just copy the file to a GPS plug-in directory.
>>
>> /Per
>>
>> ------------------------------------------------------------------------
>>
>> """
>> Makefile support
>> The intent of this package is to integrate calling to makefiles
>> in GPS.
>> there is two new Project-Attributes added in package "make"
>> make identifies the make command to use
>> Makefile identifies the Makefile to use.
>> Switches Extra switche to make.
>> Enhancents:
>> Add switches to the make.
>>
>> The syntax in the make file is the folowig
>> {target}: # {menue entry}
>>
>> sample makefile:
>>
>> all: # Make all
>> How to make all.
>> clean: # clean all
>> How to clean all.
>> """
>> import GPS
>> from os.path import *
>> import re
>> import sets
>> import os
>> class Console_Process (GPS.Console, GPS.Process):
>> def on_output (self, unmatched, matched):
>> self.write ("<" + unmatched+matched + ">")
>> GPS.Locations.parse(output= unmatched+matched,
>> category = "make results",
>> regexp="^([^:]:?[^:]*):(\d+):((\d+):)?
>> ((warning)?(\(style)?.*)",
>> file_index =1,
>> line_index =2,
>> column_index=4,
>> style_index=7,
>> warning_index=6,
>> highlight_category="make results")
>> def on_exit (self, status, remaining_output):
>> # self.write (remaining_output)
>> # print "status:" + str(status)
>> # self.destroy ()
>> pass
>> def on_input (self, input):
>> self.send (input)
>> def on_destroy (self):
>> self.kill ()
>> def __init__ (self, process, args=""):
>> GPS.Locations.remove_category("make results")
>> GPS.Editor.register_highlighting("make results","#FF0000")
>> GPS.Console.__init__ (self, "",
>> on_input=Console_Process.on_input,
>> # on_destroy=Console_Process.on_destroy,
>> force=True)
>> GPS.Process.__init__ (self, process + ' ' + args, "^.+$",
>> on_exit=Console_Process.on_exit,
>> on_match=Console_Process.on_output)
>>
>> def on_activate (self):
>> os.chdir(dirname(GPS.Project.root().file().name()))
>>
>> Switches=GPS.Project.root().get_attribute_as_string("switches","make")
>>
>> if len(Switches) <> 0:
>> args=Switches + " "
>> else:
>> args=""
>> args += "-f " + self.file + " " + self.target
>>
>> make_command=GPS.Project.root().get_attribute_as_string("make","make")
>> Console_Process (make_command, args)
>>
>> def EditFile (self):
>> GPS.Editor.edit(self.file)
>>
>> menues=sets.Set()
>>
>> def finalize():
>> """Removes all current settings"""
>> global menues
>> for i in menues:
>> i.destroy()
>>
>> def checkMakefile(self):
>> """Tries to read the make file assiciated with the current project
>> and will append the tagged targets to the menue"""
>> global menues
>> finalize()
>> try:
>>
>> Makefile=GPS.Project.root().get_attribute_as_string("makefile","make")
>> Makefile=join (dirname(GPS.Project.root().file().name()),Makefile)
>> if isfile(Makefile):
>> menues=sets.Set()
>> M=GPS.Menu.create("/Build/Makefile support/Edit Makefile",
>> on_activate=EditFile)
>> M.file=Makefile
>> menues.add(M)
>>
>> f=file(Makefile)
>> matcher=re.compile("^(.+?):.+?#(.+)")
>> for i in f:
>> matches=matcher.match(i)
>> if matches:
>> M=GPS.Menu.create("/Build/Makefile support/" +
>> matches.group(2),
>> on_activate=on_activate)
>> M.file=Makefile
>> M.target=matches.group(1)
>> menues.add(M)
>> f.close()
>> except:
>> pass
>>
>>
>> def initialize():
>> finalize()
>> GPS.parse_xml("""<project_attribute
>> name="makefile"
>> package="Make"
>> editor_section="Make"
>> description="Makefile to use for this project">
>> <string type="file"/>
>> </project_attribute>
>> <project_attribute
>> name="Make"
>> package="Make"
>> editor_section="Make"
>> description="Make command to use when parsing Makefile">
>> <string type="" default="make"/>
>> </project_attribute>
>> <project_attribute
>> name="Switches"
>> package="Make"
>> editor_section="Make"
>> description="Switches for the make command">
>> <string type="" default="-k"/>
>> </project_attribute>""")
>> GPS.Hook ("project_view_changed").add (checkMakefile)
>> initialize()
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> gps-users mailing list
>> gps-users at lists.adacore.com
>> /no-more-mailman.html
>>
>>
>
>
More information about the gps-users
mailing list