Things I've stopped using in GNU Emacs for working on Go
In light of my switch to basing my GNU Emacs Go environment on
lsp-mode, I decided to revisit a bunch of
.emacs stuff that I was previously using and take out things that
seemed outdated or that I wasn't using any more. In general, my
current assumption is that Go's big switch to using modules will
probably break any tool for dealing with Go code that hasn't been
updated, so all of them are suspect until proven otherwise. For my
own reasons, I want to record everything I remove.
My list, based on an old copy of my .emacs that I saved, is:
- go-guru, which was provided
through go-mode; one
of the things that I sort of used from it was a minor mode to
highlight identifiers. To the extent that I care about such
highlighting, it's now provided by lsp-mode.
- gorename and the
go-rename bindings for it in go-mode. In practice I never
used it to automatically rename anything in my code, so I don't
miss it now. Anyway, lsp-mode and gopls
do support renaming things, although I have to remember that
this is done through the lsp-rename command and there's no
key or menu binding for it currently.
- godoctor, which was
another path to renaming and other operations. I tried this out
early on but found some issues with it, then mostly never used
it (just like gorename).
- go-eldoc, which
provided quick documentation summaries that lsp-mode will now
also do (provided that you tune lsp-mode to your tastes).
- I previously had M-. bound to godef-jump (which comes from
go-mode), but replaced it with an equivalent lsp-mode binding
- I stopped using company-go to provide autocompletion data for Go for company-mode in favour of company-lsp, which uses lsp-mode as a general source of completion data.
All of these dropped Emacs things mean that I've implicitly stopped using gocode, which was previously the backend for a number of these things.
In general I've built up quite a bunch of Go programming tools from various sources, such as gotags, many of which I installed to poke at and then never got around to using actively. At some point I should go through everything and weed out the tools that haven't been updated to deal with modules or that I simply don't care about.
(The other option is that I should remove all of the Go programs and tools I've built up in ~/go/bin and start over from scratch, adding only things that I turn out to actively use and want. Probably I'm going to hold off on doing this until Go goes to entirely modular builds and I have to clean out my ~/go/src tree anyway.)
I should probably investigate various gopls settings that I can set either through lsp-go or as experimental settings as covered in the gopls emacs documentation. Since I get the latest Emacs packages from Melpa and compile the bleeding edge gopls myself, this is more or less an ongoing thing (with occasional irritations).