Vim documentation: ft_rust
main help file
*ft_rust.txt* For Vim version 8.2. Last change: 2017 Nov 02
This is documentation for the Rust filetype plugin.
==============================================================================
CONTENTS *rust*
1. Introduction |rust-intro|
2. Settings |rust-settings|
3. Commands |rust-commands|
4. Mappings |rust-mappings|
==============================================================================
INTRODUCTION *rust-intro*
This plugin provides syntax and supporting functionality for the Rust
filetype.
==============================================================================
SETTINGS *rust-settings*
This plugin has a few variables you can define in your vimrc that change the
behavior of the plugin.
*g:rustc_path*
g:rustc_path
Set this option to the path to rustc for use in the |:RustRun| and
|:RustExpand| commands. If unset, "rustc" will be located in $PATH:
let g:rustc_path = $HOME."/bin/rustc"
*g:rustc_makeprg_no_percent*
g:rustc_makeprg_no_percent
Set this option to 1 to have 'makeprg' default to "rustc" instead of
"rustc %":
let g:rustc_makeprg_no_percent = 1
*g:rust_conceal*
g:rust_conceal
Set this option to turn on the basic |conceal| support:
let g:rust_conceal = 1
*g:rust_conceal_mod_path*
g:rust_conceal_mod_path
Set this option to turn on |conceal| for the path connecting token
"::":
let g:rust_conceal_mod_path = 1
*g:rust_conceal_pub*
g:rust_conceal_pub
Set this option to turn on |conceal| for the "pub" token:
let g:rust_conceal_pub = 1
*g:rust_recommended_style*
g:rust_recommended_style
Set this option to enable vim indentation and textwidth settings to
conform to style conventions of the rust standard library (i.e. use 4
spaces for indents and sets 'textwidth' to 99). This option is enabled
by default. To disable it:
let g:rust_recommended_style = 0
*g:rust_fold*
g:rust_fold
Set this option to turn on YXXYfolding|:
let g:rust_fold = 1
Value Effect
0 No folding
1 Braced blocks are folded. All folds are open by
default.
2 Braced blocks are folded. 'foldlevel' is left at the
global value (all folds are closed by default).
*g:rust_bang_comment_leader*
g:rust_bang_comment_leader
Set this option to 1 to preserve the leader on multi-line doc comments
using the /*! syntax:
let g:rust_bang_comment_leader = 1
*g:ftplugin_rust_source_path*
g:ftplugin_rust_source_path
Set this option to a path that should be prepended to 'path' for Rust
source files:
let g:ftplugin_rust_source_path = $HOME.'/dev/rust'
*g:rustfmt_command*
g:rustfmt_command
Set this option to the name of the 'rustfmt' executable in your $PATH. If
not specified it defaults to 'rustfmt' :
let g:rustfmt_command = 'rustfmt'
*g:rustfmt_autosave*
g:rustfmt_autosave
Set this option to 1 to run |:RustFmt| automatically when saving a
buffer. If not specified it defaults to 0 :
let g:rustfmt_autosave = 0
*g:rustfmt_fail_silently*
g:rustfmt_fail_silently
Set this option to 1 to prevent 'rustfmt' from populating the
|location-list| with errors. If not specified it defaults to 0:
let g:rustfmt_fail_silently = 0
*g:rustfmt_options*
g:rustfmt_options
Set this option to a string of options to pass to 'rustfmt'. The
write-mode is already set to 'overwrite'. If not specified it
defaults to '' :
let g:rustfmt_options = ''
*g:rust_playpen_url*
g:rust_playpen_url
Set this option to override the URL for the playpen to use:
let g:rust_playpen_url = 'https://play.rust-lang.org/'
*g:rust_shortener_url*
g:rust_shortener_url
Set this option to override the URL for the URL shortener:
let g:rust_shortener_url = 'https://is.gd/'
==============================================================================
COMMANDS *rust-commands*
:RustRun [args] *:RustRun*
:RustRun! [rustc-args] [--] [args]
Compiles and runs the current file. If it has unsaved changes,
it will be saved first using |:update|. If the current file is
an unnamed buffer, it will be written to a temporary file
first. The compiled binary is always placed in a temporary
directory, but is run from the current directory.
The arguments given to |:RustRun| will be passed to the
compiled binary.
If ! is specified, the arguments are passed to rustc instead.
A "--" argument will separate the rustc arguments from the
arguments passed to the binary.
If |g:rustc_path| is defined, it is used as the path to rustc.
Otherwise it is assumed rustc can be found in $PATH.
:RustExpand [args] *:RustExpand*
:RustExpand! [TYPE] [args]
Expands the current file using --pretty and displays the
results in a new split. If the current file has unsaved
changes, it will be saved first using |:update|. If the
current file is an unnamed buffer, it will be written to a
temporary file first.
The arguments given to |:RustExpand| will be passed to rustc.
This is largely intended for specifying various --cfg
configurations.
If ! is specified, the first argument is the expansion type to
pass to rustc --pretty. Otherwise it will default to
"expanded".
If |g:rustc_path| is defined, it is used as the path to rustc.
Otherwise it is assumed rustc can be found in $PATH.
:RustEmitIr [args] *:RustEmitIr*
Compiles the current file to LLVM IR and displays the results
in a new split. If the current file has unsaved changes, it
will be saved first using |:update|. If the current file is an
unnamed buffer, it will be written to a temporary file first.
The arguments given to |:RustEmitIr| will be passed to rustc.
If |g:rustc_path| is defined, it is used as the path to rustc.
Otherwise it is assumed rustc can be found in $PATH.
:RustEmitAsm [args] *:RustEmitAsm*
Compiles the current file to assembly and displays the results
in a new split. If the current file has unsaved changes, it
will be saved first using |:update|. If the current file is an
unnamed buffer, it will be written to a temporary file first.
The arguments given to |:RustEmitAsm| will be passed to rustc.
If |g:rustc_path| is defined, it is used as the path to rustc.
Otherwise it is assumed rustc can be found in $PATH.
:RustPlay *:RustPlay*
This command will only work if you have web-api.vim installed
(available at https://github.com/mattn/webapi-vim). It sends the
current selection, or if nothing is selected, the entirety of the
current buffer to the Rust playpen, and emits a message with the
shortened URL to the playpen.
|g:rust_playpen_url| is the base URL to the playpen, by default
"https://play.rust-lang.org/".
|g:rust_shortener_url| is the base URL for the shortener, by
default "https://is.gd/"
:RustFmt *:RustFmt*
Runs |g:rustfmt_command| on the current buffer. If
|g:rustfmt_options| is set then those will be passed to the
executable.
If |g:rustfmt_fail_silently| is 0 (the default) then it
will populate the |location-list| with the errors from
|g:rustfmt_command|. If |g:rustfmt_fail_silently| is set to 1
then it will not populate the |location-list|.
:RustFmtRange *:RustFmtRange*
Runs |g:rustfmt_command| with selected range. See
|:RustFmt| for any other information.
==============================================================================
MAPPINGS *rust-mappings*
This plugin defines mappings for |[[| and |]]| to support hanging indents.
It also has a few other mappings:
*rust_<D-r>*
<D-r> Executes |:RustRun| with no arguments.
Note: This binding is only available in MacVim.
*rust_<D-R>*
<D-R> Populates the command line with |:RustRun|! using the
arguments given to the last invocation, but does not
execute it.
Note: This binding is only available in MacVim.
==============================================================================
top - main help file