# Vim documentation: ft_rust

main help file

    *ft_rust.txt*      Filetype plugin for Rust

    ==============================================================================

    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