#

# rust.vim

## Description

This is a Vim plugin that provides Rust file detection, syntax highlighting, formatting, Syntastic integration, and more. It requires Vim 8 or higher for full functionality. Some things may not work on earlier versions.

## Installation

Use one of the following package managers:

- Vim8 packages:
  - `git clone https://github.com/rust-lang/rust.vim ~/.vim/pack/plugins/start/rust.vim`
- Vundle:
  - Add `Plugin 'rust-lang/rust.vim'` to `~/.vimrc`
  - `:PluginInstall` or `$ vim +PluginInstall +qall`
  - Note: Vundle will not automatically detect Rust files properly if `filetype on` is executed before Vundle. Please check the quickstart for more details. Errors such as `Not an editor command: RustFmt` may occur if Vundle is misconfigured with this plugin.
- Pathogen:
  - `git clone --depth=1 https://github.com/rust-lang/rust.vim.git ~/.vim/bundle/rust.vim`
- vim-plug:
  - Add `Plug 'rust-lang/rust.vim'` to `~/.vimrc`
  - `:PlugInstall` or `$ vim +PlugInstall +qall`
- dein.vim:
  - Add `call dein#add('rust-lang/rust.vim')` to `~/.vimrc`
  - `:call dein#install()`
- NeoBundle:
  - Add `NeoBundle 'rust-lang/rust.vim'` to `~/.vimrc`
  - Re-open vim or execute `:source ~/.vimrc`

## Features

### Error checking with Syntastic

`rust.vim` automatically registers `cargo` as a syntax checker with Syntastic, if nothing else is specified. See `:help rust-syntastic` for more details.

### Source browsing with Tagbar

The installation of Tagbar along with Universal Ctags is recommended for a good Tagbar experience. For other kinds of setups, `rust.vim` tries to configure Tagbar to some degree.

### Formatting with rustfmt

The `:RustFmt` command will format your code with rustfmt if installed.

Placing `let g:rustfmt_autosave = 1` in your `~/.vimrc` will enable automatic running of `:RustFmt` when you save a buffer.

Do `:help :RustFmt` for further formatting help and customization options.

### Playpen integration

Note: This feature requires webapi-vim to be installed.

The `:RustPlay` command will send the current selection, or if nothing is selected the current buffer, to the Rust playpen.

If you set g:rust_clip_command RustPlay will copy the url to the clipboard.

- Mac:

      let g:rust_clip_command = 'pbcopy'

- Linux:

      let g:rust_clip_command = 'xclip -selection clipboard'

### Running a test under cursor

In cargo project, the `:RustTest` command will run a test under the cursor. This is useful when your project is bigger and running all tests take longer time.

## Help

Further help can be found in the documentation with `:Helptags` then `:help rust`.

Detailed help can be found in the documentation with `:help rust`. Helptags (`:help helptags`) need to be generated for this plugin in order to navigate the help. Most plugin managers will do this automatically, but check their documentation if that is not the case.

## License

Like Rust, rust.vim is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0). See LICENSE-APACHE and LICENSE-MIT for details.