KDevelop Go Plugin
onehundredof at gmail.com
Sun Aug 10 13:35:48 UTC 2014
On Sun, Aug 10, 2014 at 12:55 PM, Milian Wolff <mail at milianw.de> wrote:
> On Sunday 10 August 2014 12:01:24 Pavel Petrushkov wrote:
> > Hello KDev developers!
> this sounds awesome!
> > For the past few weeks I've been working on Go language support for
> > KDevelop and I think it is time I share my work with everyone. So, here -
> > https://github.com/OneHundRedOf/kdev-go is all that I have right now. I
> > have written a parser with KDevelop-PG-Qt, simple Declaration and Uses
> > Builders which currently support only part of all language features and
> > basic code completion support. Of course it's a long way to go to be
> > complete, but I've covered the basics like variable and function
> > declarations, type deduction with ExpressionVisitor and type members,
> > methods and imports code completion. Testing plugin with Go standart
> > library shows that it 'mostly works' right now and even can be useful
> > sometimes.
> Did you hear about the KTextEditor based Go code completion plugin:
> Generally, while I appreciate the work you did, our experience is that it
> is a
> tremendous amount of work to write, _and maintain_ a proper language
> The more you can use other libraries to do the work for you, the better.
> if you have to write the parser yourself, this will break sooner or later.
> Because of this reason, we are now working on a clang-based plugin for our
> language support. Is there really no Go library available that gives you at
> least the AST or something like that? Better yet, something like Clang
> you with types etc. already resolved.
> If not, then at least using gcode for code completion (or well, the plugin
> mentioned above) would be good instead of reinventing the wheel there.
Originally I started this project just for fun and to learn about parsers
and grammars, so I didn't think about using third party libraries. But now
that I want to actually build a complete plugin I will definitely look into
alternatives and see if I can use them.
> > I was wondering if someone here would like to review my code and give me
> > some feedback. I'm not an experienced KDE or KDevelop developer so any
> > constructive criticism and suggestions are welcome. Maybe somebody would
> > even join me in developing this plugin. Also if you think my code is ok,
> > maybe we should open a project on projects.kde.org? I have no idea about
> > the quality of accepted projects though, so that's for you to decide.
> I only had a very quick look at it, but over all it looks quite nice
> Quite a feat, considering the complexity of our language support API
> (which is
> sub-par, esp. on the documentation side ;-)). Your project is more than
> welcome on projects.kde.org, the first step would be to get a developer
> account (you can put me in as a reference), then we can import the project
Great! I will probably first look for parser alternatives as you suggested
and wait a few days, so more people can give their opinions about this
> > Currently most important issues with my plugin are lack of tests and
> > documentation, but I will start working on that soon. Also I guess I will
> > need frameworks port, I'm hoping to get some help here on that.
> Tests are crucial for a language support plugin. Really, I can't stress
> enough. Esp. if you are writing it from scratch with parser and everything,
> you'll have to write tons of tests to ensure you are not breaking something
> further down the road. You'll save yourself a huge amount of pain and time
> you develop a language support in a tests-driven style. I.e. whenever you
> notice something is not working, write a test for it, then make it pass.
> > A little bit more info about the plugin is available on github page, if
> > want to try it out, don't forget to set $GOPATH environment variable for
> > your project.
> Whats the GOPATH env var required for? Include paths or something like
> You could hook in to the IncludesAndDefinesManager in kdevelop and let the
> user define that from inside the UI.
Yes, Go searches for packages in directories mentioned in GOPATH. I'll try
to use IncludesAndDefinesManager as soon as I have more time.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the KDevelop-devel