Mittenchops
Mittenchops

Reputation: 19664

Autocomplete in golang in emacs

I'm aware a lot is involved in getting autocomplete to work in emacs, including:

I am not sure which components are responsible for which aspects. What is the package that when I start typing...

fmt.P

Would finish with

fmt.Println

?

I believe I have company as my auto-complete, and at present, if I start:

fm

It finishes fmt, but

fmt.

Produces nothing, and

fmt.P

Produces

fmt.package 

Which is entirely wrong. What package should I investigate to understand what is going on?

Upvotes: 1

Views: 5610

Answers (2)

jch
jch

Reputation: 5651

Since the original answer was written, the original gocode has ceased being maintained. While there exist forks of gocode that work well with recent versions of Go, the recommended replacement is golsp

  1. Install the eglot pakage from ELPA (not necessary if you are running Emacs 29 or later, which includes eglot out of the box).
  2. Install golsp and make sure it is in your path.
  3. Add the following to your .emacs:
(add-hook 'go-mode-hook #'eglot-ensure)
  1. Press M-TAB in a go-mode buffer.

Upvotes: 2

jch
jch

Reputation: 5651

Autocomplete, company-mode, flymake, oh my. I recommend you uninstall all of the above and use Emacs' native completion instead:

  1. install gocode and make sure the binary is in Emacs' PATH;
  2. install the go-complete package in Emacs (I got it from melpa, but you may prefer to install it manually);
  3. add the following to your .emacs:

    (add-hook 'completion-at-point-functions 'go-complete-at-point)
    
  4. press M-TAB in a go-mode buffer.

Upvotes: 3

Related Questions