The VS Code Go extension joins the Go project
blog.golang.org
blog.golang.org
I then evaluated Jetbrain's GoLand (which is a paid product) and that thing can't even extract methods or refactor names properly.
The situation is so miserable I went back to ACME with https://godoc.org/github.com/davidrjenni/A which for some reason works.
1) Syntax highlighting. They followed the textmate bundle highlighting spec which is somewhat a standard that is shared by many editors.
2) Language Server Protocol - a JSON RPC based protocol that different languages can hook into. The interface is something like. “The users cursor is at this position, what code completion items need to be shown? Where are the errors and warnings?”
3) Debug Protocol - similar JSON RPC protocol, but for debugging. For this breakpoint, show the scopes, the stack trace, console logs etc
Almost everything in Vscode communicates in an async manner. The main UI is on an isolated process, and all extensions are on a different process so they don’t stall the UI.
It’s a modularized and RPC based architecture.
That's impressive, I didn't realize VS Code is that popular nowadays.
The latter is a licensed product, I had to pull some strings to get a license at my current job. Well worth it though, I worked in VS Code earlier but it wasn't as complete as IDEA. For example, in my particular case I work in an older codebase targeting ES5 (no transpilers or whatever) and PHP 5.3; setting the language mode to those, I get warnings if I try to use PHP's short array syntax or ES6+ specific functions. At the same time I'm working on a replacement in Typescript/React and Go. It just works without a hassle, and I get things like go to definition and common refactorings working out of the box.
I still do my builds and running on the commandline though, it has to be portable.
Months ago I tried configuring and running the extensions for Go on Emacs on Windows and it was a nightmare and a loss of time.