[GSoC2017] Proposal of golang integration.

Aleix Pol aleixpol at kde.org
Tue Mar 21 00:03:00 UTC 2017


On Tue, Mar 21, 2017 at 12:29 AM, Aleix Pol <aleixpol at kde.org> wrote:
> On Mon, Mar 20, 2017 at 9:43 PM, Mikhail Ivchenko <ematirov at gmail.com> wrote:
>> Hello,
>>
>> Firstly, I want to apologize since I understand that ideally some kind of
>> proposal should have been submitted before actual start of application.
>>
>> Briefly about me:
>> I'm 18 years old student from Russia who has some kind of experience in
>> C++\Qt and Go. I was Google Code-In GP Winner with KDE in 2013 and 2014
>> years and have some commits to KDevelop as well. Also, I mentored few tasks
>> in GCI this year.
>>
>> So, my proposal is mostly inspired by GSoC 2017 page. I had a quick research
>> and come up with such ideas about Go language integration:
>> 1. For support building \ project exploring:
>>     - Implement IProjectBuilder in something like
>> projectbuilders/golangbuilder
>>     - Implement IBuildSystemManager in smtg like projectmanagers/golang
>>     Main goal is to add 1) possibility to open golang projects and handle
>> files of it. (Probably all files inside specific folder using
>> AbstractFileManagerPlugin); 2) possibility to build \ install project and
>> change such parameters as "GOPATH" and "go" executable path (for using
>> different versions of Gofor example).
>> 2. For source code formatting it's possible to use "go fmt" - standard tool
>> for formatting. Just need to implement ISourceFormatter and pass calls to
>> "go fmt".
>> 3. For autocompletion support it's possible to use gocode
>> (https://github.com/nsf/gocode). It's a popular autocompletion daemon for Go
>> which is used in such editors as Vim, Atom, Emacs, VS Code. This will be
>> probably one of hardest features to implement.
>> 4. Re semantic highlighting - as far as I know there are no real tools for
>> highlighting - so I can only try to update existing Kate syntax files if
>> they are outdated.
>> 5. Addition but probably even more hard part could be implementing support
>> for calling "gometalinter" (https://github.com/alecthomas/gometalinter) and
>> parsing \ displaying list of warnings.
>>
>> I personally would like to go with 1-4 and try to work on 5 if I'll have
>> time remaining.
>>
>> Does it look interesting to anyone? Could someone mentor me please?
>>
>> Best regards,
>> Mikhail Ivchenko
>
> Hi Mikhail,
> That's certainly interesting.
>
> Do you have any experience with KDevelop? It would be really
> interesting to see a patch of yours (maybe fix a bug that bothers
> you?). This way we get to see how you work.
>
> You only mentioned code completion, does that mean you are not
> interested in working on a DUChain implementation for Go?
>
> Somebody worked on a go plugin some time ago:
> https://github.com/KDE/kdev-go
>
> Would it make sense to build on top of it?
>
> Looking forward to your reply!
> Aleix

Hi Mikhail,
Just another thing.
Have you considered implementing it using LSP?
https://github.com/sourcegraph/go-langserver

Aleix


More information about the KDevelop-devel mailing list