Programming language: Emacs Lisp
Tags: Development Tools     IDEs     Emacs    
Latest version: v1.3

emacs-racer alternatives and similar packages

Based on the "Emacs" category.
Alternatively, view emacs-racer alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of emacs-racer or a related project?

Add another 'Emacs' Package


Racer for Emacs

MELPA MELPA Stable Build Status Coverage Status

This is the official Emacs package for Racer.

<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again --> Table of Contents

<!-- markdown-toc end -->


racer.el supports code completion of variables, functions and modules.

[racer completion screenshot](images/racer_completion.png)

You can also press F1 to pop up a help buffer for the current completion candidate.

Note that due to a limitation of racer, racer.el cannot offer completion for macros.

Find Definitions

racer.el can jump to definition of functions and types.

[racer go to definition](images/racer_goto.gif)

You can use M-. to go to the definition, and M-, to go back.

Describe Functions and Types

racer.el can show a help buffer based on the docstring of the thing at point.

[racer completion screenshot](images/racer_help.png)

Use M-x racer-describe to open the help buffer.


  1. You will need to use a nightly version of rust. If you're using rustup, run

    $ rustup toolchain add nightly
  2. Install Racer and download the source code of Rust:

   $ rustup component add rust-src
   $ cargo +nightly install racer
  1. Allow Emacs to install packages from MELPA:
   (require 'package)
   (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
  1. Install the Emacs package for Racer: M-x package-install RET racer RET

  2. Configure Emacs to activate racer when rust-mode starts:

    (add-hook 'rust-mode-hook #'racer-mode)
    (add-hook 'racer-mode-hook #'eldoc-mode)

For completions, install company with M-x package-install RET company RET. A sample configuration:

   (add-hook 'racer-mode-hook #'company-mode)

   (require 'rust-mode)
   (define-key rust-mode-map (kbd "TAB") #'company-indent-or-complete-common)
   (setq company-tooltip-align-annotations t)

For automatic completions, customize company-idle-delay and company-minimum-prefix-length.

Racer process may be slow to respond for instance when indexing. You can customize racer-command-timeout and racer-eldoc-timeout to avoid rendering your Emacs session unresponsive. Eldoc timeout should be on the lower side and defaults to 0.5 seconds. You can probably tweak it down on a fast machine. Timeout of nil will wait indefinitely.

Testing your setup

To test completion: Open a rust file and try typing use std::io::B and press TAB.

To test go to definition: Place your cursor over a symbol and press M-. to jump to its definition.

Press C-x 4 . to jump to its definition in another window.

Press C-x 5 . to jump to its definition in another frame.

Press M-, to jump back to the previous cursor location.

If it doesn't work, try M-x racer-debug to see what command was run and what output was returned.


racer.el includes tests. To run them, you need to install Cask, then:

$ cask install
$ cask exec ert-runner