I am new to emacs (long-time vim user). Specifically, I am using doom-emacs.

Doom is supposedly set up to use company-mode for auto completion, but I have not gotten it to work. I have the following source code:

class CompleteUserBankruptcyJob < ApplicationJob
  queue_as :default

  def perform(user)

If I type in def perfo, I would expect company to suggest perform. However, it does not suggest anything at all. If I manually trigger suggestions via C-SPC, it says "No completion found". Finally, if I run company-diag in the buffer, I get the following information:

Emacs 27.1 (x86_64-apple-darwin18.7.0) of 2020-08-12 on builder10-14.porkrind.org
Company 0.9.13

company-backends: (company-capf company-yasnippet)

Used backend: company-yasnippet
Major mode: ruby-mode
Prefix: nil
Completions: none

I have no idea how to debug further. If it is any help, I have my personal configuration files in this repo, but I have not modified any company-mode related settings, so it should all be using the default from doom-emacs, which for company I believe are located here. Finally, I believe that the list of backends is not being set correctly in ruby major mode (and may be failing in other modes as well), given the references to company in this file.

  • In your repo, init.el file: you did not enabled ruby language - uncomment that line, save and in terminal doom sync. Also, with the point on ruby word, press K to see the documentation - further configuration may be needed. – Ian Oct 4 '20 at 7:36

I'm not sure which completion backend Doom uses by default these days for Ruby (whether it's LSP or Robe), but the Troubleshooting section of company/README.org says this:

For instance, go-mode requires guru to be installed on your system, and ruby-mode requires that you have a Robe server running (M-x robe-start).

Meaning, you need to have robe (the package) installed (perhaps it already is) and to type M-x robe-start to launch the background process. And to possibly deal with any errors you see if it fails to launch (e.g. run bundle install).

Yes, I'm also not sure why company-robe is not in the list of backend, but perhaps it will be added automatically as soon as the robe package is (auto)-loaded.

  • Thank you Dmitry - I feel like we are getting closer. I made sure that I am on the latest [commit ](github.com/hlissner/doom-emacs/tree/…) of doom's develop branch by running doom upgrade. However, I still don't see robe-start, and the instructions on the readme only say to run gem install rubocop. – Steven L. Oct 6 '20 at 14:16
  • Try installing the robe package. Or lsp-mode. – Dmitry Oct 6 '20 at 20:00
  • Ah - yes, I am definitely missing the robe package. If I run doom-describe-package for robe, I get the following: ` Package: robe Source: Not installed Modules: Declared by the following Doom modules: :lang ruby Configs: This package is configured in the following locations: modules/lang/ruby/config.el:38:(use-package! robe . Unfortunately, I don't know how to fix this the correct way, since it looks like doom` should have installed robe. – Steven L. Oct 7 '20 at 13:45
  • Sorry I can't be of more help: I don't use Doom myself. Try github.com/hlissner/doom-emacs/#getting-help – Dmitry Oct 7 '20 at 17:43
  • I switched to using lsp-mode instead. It looked like the robe package was not installed properly by Doom.There are instructions on how to enable lsp-mode in the ruby lang readme. – Steven L. Oct 8 '20 at 12:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.