https://github.com/phildawes/racer.git
git clone 'git://github.com/phildawes/racer.git'
RACER = Rust Auto-Complete-er. A utility intended to provide rust code completion for editors and IDEs. Maybe one day the ‘er’ bit will be exploring + refactoring or something.
cd racer; cargo build --release
Set the RUST_SRC_PATH
env variable to point to the ‘src’ dir in your rust source installation
(e.g. % export RUST_SRC_PATH=/usr/local/src/rust/src
)
./target/release/racer complete std::io::B
(should show some completions)
Install emacs 24
Install rust-mode.
Install company mode. (e.g. via ELPA: M-x list-packages
, select 'company'
)
Configure Emacs to find racer:
(setq racer-rust-src-path "<path-to-rust-srcdir>/src/")
(setq racer-cmd "<path-to-racer>/target/release/racer")
(add-to-list 'load-path "<path-to-racer>/editors/emacs")
(eval-after-load "rust-mode" '(require 'racer))
(add-hook 'rust-mode-hook
'(lambda ()
(racer-activate)
(local-set-key (kbd "M-.") #'racer-find-definition)
(local-set-key (kbd "TAB") #'racer-complete-or-indent)))
Open a rust file and try typing use std::io::B
and press <tab>
Place your cursor over a symbol and hit M-. to jump to the definition.
Vundle users:
Vundle 'phildawes/racer'
NeoBundle users:
NeoBundle 'phildawes/racer', {
\ 'build' : {
\ 'mac': 'cargo build --release',
\ 'unix': 'cargo build --release',
\ }
\ }
Add g:racer_cmd and $RUST_SRC_PATH variables to your .vimrc. Also it's worth turning on ‘hidden’ mode for buffers otherwise you need to save the current buffer every time you do a goto-definition. E.g.:
set hidden
let g:racer_cmd = "<path-to-racer>/target/release/racer"
let $RUST_SRC_PATH="<path-to-rust-srcdir>/src/"
In insert mode use C-x-C-o to search for completions
In normal mode type ‘gd’ to go to a definition
The Kate community maintains a plugin. It will be bundled with future releases of Kate (read more here).
Enable ‘Rust code completion’ in the plugin list in the Kate config dialog
On the new ‘Rust code completion’ dialog page, make sure ‘Racer command’ and ‘Rust source tree location’ are set correctly