aboutsummaryrefslogtreecommitdiff
path: root/runtime/doc/ft_rust.txt
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/doc/ft_rust.txt')
-rw-r--r--runtime/doc/ft_rust.txt433
1 files changed, 336 insertions, 97 deletions
diff --git a/runtime/doc/ft_rust.txt b/runtime/doc/ft_rust.txt
index a5d5b558dc..159ff7d5f6 100644
--- a/runtime/doc/ft_rust.txt
+++ b/runtime/doc/ft_rust.txt
@@ -1,72 +1,74 @@
-*ft_rust.txt* Nvim
-
-This is documentation for the Rust filetype plugin.
+*ft_rust.txt* Filetype plugin for Rust
==============================================================================
-CONTENTS *rust*
+CONTENTS *rust*
-1. Introduction |rust-intro|
-2. Settings |rust-settings|
-3. Commands |rust-commands|
-4. Mappings |rust-mappings|
+1. Introduction |rust-intro|
+2. Settings |rust-settings|
+3. Commands |rust-commands|
+4. Mappings |rust-mappings|
==============================================================================
-INTRODUCTION *rust-intro*
+INTRODUCTION *rust-intro*
This plugin provides syntax and supporting functionality for the Rust
-filetype.
+filetype. It requires Vim 8 or higher for full functionality. Some commands
+will not work on earlier versions.
==============================================================================
-SETTINGS *rust-settings*
+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~
+Some variables can be set buffer local (`:b` prefix), and the buffer local
+will take precedence over the global `g:` counterpart.
+
+ *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"
+ |:RustExpand| commands. If unset, `rustc` will be located in $PATH: >vim
+ 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 %": >
+ *g:rustc_makeprg_no_percent*
+g:rustc_makeprg_no_percent ~
+ Set this option to 1 to have 'makeprg' default to `rustc` instead of
+ `rustc %`: >vim
let g:rustc_makeprg_no_percent = 1
<
- *g:rust_conceal*
-g:rust_conceal~
- Set this option to turn on the basic |conceal| support: >
+ *g:rust_conceal*
+g:rust_conceal ~
+ Set this option to turn on the basic |conceal| support: >vim
let g:rust_conceal = 1
<
- *g:rust_conceal_mod_path*
-g:rust_conceal_mod_path~
+ *g:rust_conceal_mod_path*
+g:rust_conceal_mod_path ~
Set this option to turn on |conceal| for the path connecting token
- "::": >
+ "::": >vim
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: >
+ *g:rust_conceal_pub*
+g:rust_conceal_pub ~
+ Set this option to turn on |conceal| for the "pub" token: >vim
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: >
+ *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: >vim
let g:rust_recommended_style = 0
<
- *g:rust_fold*
-g:rust_fold~
- Set this option to turn on |folding|: >
+ *g:rust_fold*
+g:rust_fold ~
+ Set this option to turn on |folding|: >vim
let g:rust_fold = 1
<
Value Effect ~
@@ -77,62 +79,296 @@ g:rust_fold~
global value (all folds are closed by default).
*g:rust_bang_comment_leader*
-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: >
+ using the `/*!` syntax: >vim
let g:rust_bang_comment_leader = 1
<
- *g:ftplugin_rust_source_path*
-g:ftplugin_rust_source_path~
+ *g:rust_use_custom_ctags_defs*
+g:rust_use_custom_ctags_defs ~
+ Set this option to 1 if you have customized ctags definitions for Rust
+ and do not wish for those included with rust.vim to be used: >vim
+ let g:rust_use_custom_ctags_defs = 1
+<
+
+ NOTE: rust.vim's built-in definitions are only used for the Tagbar Vim
+ plugin, if you have it installed, AND if Universal Ctags is not
+ detected. This is because Universal Ctags already has built-in
+ support for Rust when used with Tagbar.
+
+ Also, note that when using ctags other than Universal Ctags, it is not
+ automatically used when generating |tags| files that Vim can use to
+ navigate to definitions across different source files. Feel free to
+ copy `rust.vim/ctags/rust.ctags` into your own `~/.ctags` if you wish
+ to generate |tags| files.
+
+ *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'
+ source files: >vim
+ let g:ftplugin_rust_source_path = $HOME . '/dev/rust'
<
*g:rustfmt_command*
-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" : >
+ not specified it defaults to "rustfmt" : >vim
let g:rustfmt_command = 'rustfmt'
<
*g:rustfmt_autosave*
-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 : >
+ buffer. If not specified it defaults to 0 : >vim
let g:rustfmt_autosave = 0
<
+ There is also a buffer-local b:rustfmt_autosave that can be set for
+ the same purpose, and can override the global setting.
+
+ *g:rustfmt_autosave_if_config_present*
+g:rustfmt_autosave_if_config_present ~
+ Set this option to 1 to have *b:rustfmt_autosave* be set automatically
+ if a `rustfmt.toml` file is present in any parent directly leading to
+ the file being edited. If not set, default to 0: >vim
+ let g:rustfmt_autosave_if_config_present = 0
+<
+ This is useful to have `rustfmt` only execute on save, on projects
+ that have `rustfmt.toml` configuration.
+
+ There is also a buffer-local b:rustfmt_autosave_if_config_present
+ that can be set for the same purpose, which can overrides the global
+ setting.
+
*g:rustfmt_fail_silently*
-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: >
+ |location-list| with errors. If not specified it defaults to 0: >vim
let g:rustfmt_fail_silently = 0
<
*g:rustfmt_options*
-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 '' : >
+ defaults to '' : >vim
let g:rustfmt_options = ''
<
+ *g:rustfmt_emit_files*
+g:rustfmt_emit_files ~
+ If not specified rust.vim tries to detect the right parameter to
+ pass to rustfmt based on its reported version. Otherwise, it
+ determines whether to run rustfmt with '--emit=files' (when 1 is
+ provided) instead of '--write-mode=overwrite'. >vim
+ let g:rustfmt_emit_files = 0
+<
*g:rust_playpen_url*
-g:rust_playpen_url~
- Set this option to override the URL for the playpen to use: >
+g:rust_playpen_url ~
+ Set this option to override the url for the playpen to use: >vim
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: >
+g:rust_shortener_url ~
+ Set this option to override the url for the url shortener: >vim
let g:rust_shortener_url = 'https://is.gd/'
<
+ *g:rust_clip_command*
+g:rust_clip_command ~
+ Set this option to the command used in your OS to copy the Rust Play
+ url to the clipboard: >vim
+ let g:rust_clip_command = 'xclip -selection clipboard'
+<
+ *g:cargo_makeprg_params*
+g:cargo_makeprg_params ~
+ Set this option to the string of parameters to pass to cargo. If not
+ specified it defaults to `$*` : >vim
+ let g:cargo_makeprg_params = 'build'
+<
+
+ *g:cargo_shell_command_runner*
+g:cargo_shell_command_runner ~
+ Set this option to change how to run shell commands for cargo commands
+ |:Cargo|, |:Cbuild|, |:Crun|, ...
+ By default, |:terminal| is used to run shell command in terminal window
+ asynchronously. But if you prefer |:!| for running the commands, it can
+ be specified: >vim
+ let g:cargo_shell_command_runner = '!'
+<
+
+------------------------------------------------------------------------------
+Integration with Syntastic *rust-syntastic*
+
+This plugin automatically integrates with the Syntastic checker. There are two
+checkers provided: `rustc`, and `cargo`. The latter invokes `cargo` in order to
+build code, and the former delivers a single edited '.rs' file as a compilation
+target directly to the Rust compiler, `rustc`.
+
+Because Cargo is almost exclusively being used for building Rust code these
+days, `cargo` is the default checker. >vim
+
+ let g:syntastic_rust_checkers = ['cargo']
+<
+If you would like to change it, you can set `g:syntastic_rust_checkers` to a
+different value.
+ *g:rust_cargo_avoid_whole_workspace*
+ *b:rust_cargo_avoid_whole_workspace*
+g:rust_cargo_avoid_whole_workspace ~
+ When editing a crate that is part of a Cargo workspace, and this
+ option is set to 1 (the default), then `cargo` will be executed
+ directly in that crate directory instead of in the workspace
+ directory. Setting 0 prevents this behavior - however be aware that if
+ you are working in large workspace, Cargo commands may take more time,
+ plus the Syntastic error list may include all the crates in the
+ workspace. >vim
+ let g:rust_cargo_avoid_whole_workspace = 0
+<
+ *g:rust_cargo_check_all_targets*
+ *b:rust_cargo_check_all_targets*
+g:rust_cargo_check_all_targets ~
+ When set to 1, the `--all-targets` option will be passed to cargo when
+ Syntastic executes it, allowing the linting of all targets under the
+ package.
+ The default is 0.
+
+ *g:rust_cargo_check_all_features*
+ *b:rust_cargo_check_all_features*
+g:rust_cargo_check_all_features ~
+ When set to 1, the `--all-features` option will be passed to cargo when
+ Syntastic executes it, allowing the linting of all features of the
+ package.
+ The default is 0.
+
+ *g:rust_cargo_check_examples*
+ *b:rust_cargo_check_examples*
+g:rust_cargo_check_examples ~
+ When set to 1, the `--examples` option will be passed to cargo when
+ Syntastic executes it, to prevent the exclusion of examples from
+ linting. The examples are normally under the `examples/` directory of
+ the crate.
+ The default is 0.
+
+ *g:rust_cargo_check_tests*
+ *b:rust_cargo_check_tests*
+g:rust_cargo_check_tests ~
+ When set to 1, the `--tests` option will be passed to cargo when
+ Syntastic executes it, to prevent the exclusion of tests from linting.
+ The tests are normally under the `tests/` directory of the crate.
+ The default is 0.
+
+ *g:rust_cargo_check_benches*
+ *b:rust_cargo_check_benches*
+g:rust_cargo_check_benches ~
+ When set to 1, the `--benches` option will be passed to cargo when
+ Syntastic executes it. The benches are normally under the `benches/`
+ directory of the crate.
+ The default is 0.
+
+------------------------------------------------------------------------------
+Integration with auto-pairs *rust-auto-pairs*
+
+This plugin automatically configures the auto-pairs plugin not to duplicate
+single quotes, which are used more often for lifetime annotations than for
+single character literals.
+
+ *g:rust_keep_autopairs_default*
+g:rust_keep_autopairs_default ~
+
+ Don't override auto-pairs default for the Rust filetype. The default
+ is 0.
==============================================================================
-COMMANDS *rust-commands*
+COMMANDS *rust-commands*
+
+Invoking Cargo ~
+
+This plug defines very simple shortcuts for invoking Cargo from with Vim.
+
+:Cargo <args> *:Cargo*
+ Runs `cargo` with the provided arguments.
+
+:Cbuild <args> *:Cbuild*
+ Shortcut for `cargo build` .
+
+:Cclean <args> *:Cclean*
+ Shortcut for `cargo clean` .
+
+:Cdoc <args> *:Cdoc*
+ Shortcut for `cargo doc` .
+
+:Cinit <args> *:Cinit*
+ Shortcut for `cargo init` .
+
+:Crun <args> *:Crun*
+ Shortcut for `cargo run` .
+
+:Ctest <args> *:Ctest*
+ Shortcut for `cargo test` .
+
+:Cupdate <args> *:Cupdate*
+ Shortcut for `cargo update` .
+
+:Cbench <args> *:Cbench*
+ Shortcut for `cargo bench` .
+
+:Csearch <args> *:Csearch*
+ Shortcut for `cargo search` .
+
+:Cpublish <args> *:Cpublish*
+ Shortcut for `cargo publish` .
+
+:Cinstall <args> *:Cinstall*
+ Shortcut for `cargo install` .
+
+:Cruntarget <args> *:Cruntarget*
+ Shortcut for `cargo run --bin` or `cargo run --example`,
+ depending on the currently open buffer.
+
+Formatting ~
+
+: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|.
-:RustRun [args] *:RustRun*
+:RustFmtRange *:RustFmtRange*
+ Runs |g:rustfmt_command| with selected range. See
+ |:RustFmt| for any other information.
+
+
+Playpen integration ~
+
+: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 shorterner, by
+ default "https://is.gd/"
+
+ |g:rust_clip_command| is the command to run to copy the
+ playpen url to the clipboard of your system.
+
+
+Evaluation of a single Rust file ~
+
+NOTE: These commands are useful only when working with standalone Rust files,
+which is usually not the case for common Rust development. If you wish to
+building Rust crates from with Vim can should use Vim's make, Syntastic, or
+functionality from other plugins.
+
+
+: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
@@ -150,26 +386,26 @@ COMMANDS *rust-commands*
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 [args] *:RustExpand*
:RustExpand! [TYPE] [args]
- Expands the current file using --pretty and displays the
+ 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
+ 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
+ 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*
+: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
@@ -180,7 +416,7 @@ COMMANDS *rust-commands*
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*
+: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
@@ -191,49 +427,52 @@ COMMANDS *rust-commands*
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/".
+Running test(s) ~
- |g:rust_shortener_url| is the base URL for the shortener, by
- default "https://is.gd/"
+:[N]RustTest[!] [options] *:RustTest*
+ Runs a test under the cursor when the current buffer is in a
+ cargo project with "cargo test" command. If the command did
+ not find any test function under the cursor, it stops with an
+ error message.
-:RustFmt *:RustFmt*
- Runs |g:rustfmt_command| on the current buffer. If
- |g:rustfmt_options| is set then those will be passed to the
- executable.
+ When N is given, adjust the size of the new window to N lines
+ or columns.
- 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|.
+ When ! is given, runs all tests regardless of current cursor
+ position.
-:RustFmtRange *:RustFmtRange*
- Runs |g:rustfmt_command| with selected range. See
- |:RustFmt| for any other information.
+ When [options] is given, it is passed to "cargo" command
+ arguments.
-==============================================================================
-MAPPINGS *rust-mappings*
+ When the current buffer is outside cargo project, the command
+ runs `rustc --test` command instead of "cargo test" as
+ fallback. All tests are run regardless of adding ! since there
+ is no way to run specific test function with rustc. [options]
+ is passed to `rustc` command arguments in the case.
-This plugin defines mappings for |[[| and |]]| to support hanging indents.
+ Takes optional modifiers (see |<mods>|): >vim
+ :tab RustTest
+ :belowright 16RustTest
+ :leftabove vert 80RustTest
+<
+rust.vim Debugging ~
-It also has a few other mappings:
+:RustInfo *:RustInfo*
+ Emits debugging info of the Vim Rust plugin.
- *rust_<D-r>*
-<D-r> Executes |:RustRun| with no arguments.
- Note: This binding is only available in MacVim.
+:RustInfoToClipboard *:RustInfoClipboard*
+ Saves debugging info of the Vim Rust plugin to the default
+ register.
- *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.
+:RustInfoToFile [filename] *:RustInfoToFile*
+ Saves debugging info of the Vim Rust plugin to the given file,
+ overwriting it.
==============================================================================
- vim:tw=78:sw=4:ts=8:noet:ft=help:norl:
+MAPPINGS *rust-mappings*
+
+This plugin defines mappings for |[[| and |]]| to support hanging indents.
+
+
+vim:tw=78:sw=4:noet:ts=8:ft=help:norl: