KDevelop Go Plugin

Pavel Petrushkov 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!
> Hello,
> 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:
> https://bitbucket.org/lucashnegri/kgocode
> 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
> plugin.
> The more you can use other libraries to do the work for you, the better.
> Esp.
> 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
> C++
> 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
> gives
> 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
> already.
> 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
> to
> playground.

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
> this
> 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
> if
> 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
> you
> > 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
> that?
> 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...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20140810/b508dab4/attachment.html>

More information about the KDevelop-devel mailing list