blob: 71e3027ceb0c5d90d721ea415ce2933d10bcbc83 [file] [log] [blame]
Bram Moolenaar3c2881d2017-03-21 19:18:29 +01001*ft_rust.txt* Filetype plugin for Rust
2
3==============================================================================
Bram Moolenaare0720cb2017-03-29 13:48:40 +02004CONTENTS *rust*
Bram Moolenaar3c2881d2017-03-21 19:18:29 +01005
61. Introduction |rust-intro|
72. Settings |rust-settings|
83. Commands |rust-commands|
94. Mappings |rust-mappings|
10
11==============================================================================
12INTRODUCTION *rust-intro*
13
14This plugin provides syntax and supporting functionality for the Rust
15filetype.
16
17==============================================================================
18SETTINGS *rust-settings*
19
20This plugin has a few variables you can define in your vimrc that change the
21behavior of the plugin.
22
23 *g:rustc_path*
24g:rustc_path~
25 Set this option to the path to rustc for use in the |:RustRun| and
26 |:RustExpand| commands. If unset, "rustc" will be located in $PATH: >
27 let g:rustc_path = $HOME."/bin/rustc"
28<
29
30 *g:rustc_makeprg_no_percent*
31g:rustc_makeprg_no_percent~
32 Set this option to 1 to have 'makeprg' default to "rustc" instead of
33 "rustc %": >
34 let g:rustc_makeprg_no_percent = 1
35<
36
37 *g:rust_conceal*
38g:rust_conceal~
39 Set this option to turn on the basic |conceal| support: >
40 let g:rust_conceal = 1
41<
42
43 *g:rust_conceal_mod_path*
44g:rust_conceal_mod_path~
45 Set this option to turn on |conceal| for the path connecting token
46 "::": >
47 let g:rust_conceal_mod_path = 1
48<
49
50 *g:rust_conceal_pub*
51g:rust_conceal_pub~
52 Set this option to turn on |conceal| for the "pub" token: >
53 let g:rust_conceal_pub = 1
54<
55
56 *g:rust_recommended_style*
57g:rust_recommended_style~
58 Set this option to enable vim indentation and textwidth settings to
59 conform to style conventions of the rust standard library (i.e. use 4
60 spaces for indents and sets 'textwidth' to 99). This option is enabled
61 by default. To disable it: >
62 let g:rust_recommended_style = 0
63<
64
65 *g:rust_fold*
66g:rust_fold~
67 Set this option to turn on |folding|: >
68 let g:rust_fold = 1
69<
70 Value Effect ~
71 0 No folding
72 1 Braced blocks are folded. All folds are open by
73 default.
74 2 Braced blocks are folded. 'foldlevel' is left at the
75 global value (all folds are closed by default).
76
77 *g:rust_bang_comment_leader*
78g:rust_bang_comment_leader~
79 Set this option to 1 to preserve the leader on multi-line doc comments
80 using the /*! syntax: >
81 let g:rust_bang_comment_leader = 1
82<
83
84 *g:ftplugin_rust_source_path*
85g:ftplugin_rust_source_path~
86 Set this option to a path that should be prepended to 'path' for Rust
87 source files: >
88 let g:ftplugin_rust_source_path = $HOME.'/dev/rust'
89<
90
91 *g:rustfmt_command*
92g:rustfmt_command~
93 Set this option to the name of the 'rustfmt' executable in your $PATH. If
94 not specified it defaults to 'rustfmt' : >
95 let g:rustfmt_command = 'rustfmt'
96<
97 *g:rustfmt_autosave*
98g:rustfmt_autosave~
99 Set this option to 1 to run |:RustFmt| automatically when saving a
100 buffer. If not specified it defaults to 0 : >
101 let g:rustfmt_autosave = 0
102<
103 *g:rustfmt_fail_silently*
104g:rustfmt_fail_silently~
105 Set this option to 1 to prevent 'rustfmt' from populating the
106 |location-list| with errors. If not specified it defaults to 0: >
107 let g:rustfmt_fail_silently = 0
108<
109 *g:rustfmt_options*
110g:rustfmt_options~
111 Set this option to a string of options to pass to 'rustfmt'. The
112 write-mode is already set to 'overwrite'. If not specified it
113 defaults to '' : >
114 let g:rustfmt_options = ''
115<
116
117 *g:rust_playpen_url*
118g:rust_playpen_url~
Bram Moolenaarf55e4c82017-08-01 20:44:53 +0200119 Set this option to override the URL for the playpen to use: >
Bram Moolenaar3c2881d2017-03-21 19:18:29 +0100120 let g:rust_playpen_url = 'https://play.rust-lang.org/'
121<
122
123 *g:rust_shortener_url*
124g:rust_shortener_url~
Bram Moolenaarf55e4c82017-08-01 20:44:53 +0200125 Set this option to override the URL for the URL shortener: >
Bram Moolenaar3c2881d2017-03-21 19:18:29 +0100126 let g:rust_shortener_url = 'https://is.gd/'
127<
128
129
130==============================================================================
131COMMANDS *rust-commands*
132
133:RustRun [args] *:RustRun*
134:RustRun! [rustc-args] [--] [args]
135 Compiles and runs the current file. If it has unsaved changes,
136 it will be saved first using |:update|. If the current file is
137 an unnamed buffer, it will be written to a temporary file
138 first. The compiled binary is always placed in a temporary
139 directory, but is run from the current directory.
140
141 The arguments given to |:RustRun| will be passed to the
142 compiled binary.
143
144 If ! is specified, the arguments are passed to rustc instead.
145 A "--" argument will separate the rustc arguments from the
146 arguments passed to the binary.
147
148 If |g:rustc_path| is defined, it is used as the path to rustc.
149 Otherwise it is assumed rustc can be found in $PATH.
150
151:RustExpand [args] *:RustExpand*
152:RustExpand! [TYPE] [args]
153 Expands the current file using --pretty and displays the
154 results in a new split. If the current file has unsaved
155 changes, it will be saved first using |:update|. If the
156 current file is an unnamed buffer, it will be written to a
157 temporary file first.
158
159 The arguments given to |:RustExpand| will be passed to rustc.
160 This is largely intended for specifying various --cfg
161 configurations.
162
163 If ! is specified, the first argument is the expansion type to
164 pass to rustc --pretty. Otherwise it will default to
165 "expanded".
166
167 If |g:rustc_path| is defined, it is used as the path to rustc.
168 Otherwise it is assumed rustc can be found in $PATH.
169
170:RustEmitIr [args] *:RustEmitIr*
171 Compiles the current file to LLVM IR and displays the results
172 in a new split. If the current file has unsaved changes, it
173 will be saved first using |:update|. If the current file is an
174 unnamed buffer, it will be written to a temporary file first.
175
176 The arguments given to |:RustEmitIr| will be passed to rustc.
177
178 If |g:rustc_path| is defined, it is used as the path to rustc.
179 Otherwise it is assumed rustc can be found in $PATH.
180
181:RustEmitAsm [args] *:RustEmitAsm*
182 Compiles the current file to assembly and displays the results
183 in a new split. If the current file has unsaved changes, it
184 will be saved first using |:update|. If the current file is an
185 unnamed buffer, it will be written to a temporary file first.
186
187 The arguments given to |:RustEmitAsm| will be passed to rustc.
188
189 If |g:rustc_path| is defined, it is used as the path to rustc.
190 Otherwise it is assumed rustc can be found in $PATH.
191
192:RustPlay *:RustPlay*
193 This command will only work if you have web-api.vim installed
194 (available at https://github.com/mattn/webapi-vim). It sends the
195 current selection, or if nothing is selected, the entirety of the
196 current buffer to the Rust playpen, and emits a message with the
197 shortened URL to the playpen.
198
199 |g:rust_playpen_url| is the base URL to the playpen, by default
200 "https://play.rust-lang.org/".
201
Bram Moolenaarf55e4c82017-08-01 20:44:53 +0200202 |g:rust_shortener_url| is the base URL for the shorterner, by
Bram Moolenaar3c2881d2017-03-21 19:18:29 +0100203 default "https://is.gd/"
204
205:RustFmt *:RustFmt*
206 Runs |g:rustfmt_command| on the current buffer. If
207 |g:rustfmt_options| is set then those will be passed to the
208 executable.
209
210 If |g:rustfmt_fail_silently| is 0 (the default) then it
211 will populate the |location-list| with the errors from
212 |g:rustfmt_command|. If |g:rustfmt_fail_silently| is set to 1
213 then it will not populate the |location-list|.
214
215:RustFmtRange *:RustFmtRange*
216 Runs |g:rustfmt_command| with selected range. See
217 |:RustFmt| for any other information.
218
219==============================================================================
220MAPPINGS *rust-mappings*
221
222This plugin defines mappings for |[[| and |]]| to support hanging indents.
223
224It also has a few other mappings:
225
226 *rust_<D-r>*
227<D-r> Executes |:RustRun| with no arguments.
228 Note: This binding is only available in MacVim.
229
230 *rust_<D-R>*
231<D-R> Populates the command line with |:RustRun|! using the
232 arguments given to the last invocation, but does not
233 execute it.
234 Note: This binding is only available in MacVim.
235
236==============================================================================
237 vim:tw=78:sw=4:noet:ts=8:ft=help:norl: