*ft_rust.txt*      Rust 用ファイルタイププラグイン

==============================================================================
☆内容                                                         *rust*

1. 前書き                                                         |rust-intro|
2. 設定                                                        |rust-settings|
3. コマンド                                                    |rust-commands|
4. マッピング                                                  |rust-mappings|

==============================================================================
☆前書き                                                            *rust-intro*

このプラグインは、Rust ファイルタイプの構文とサポート機能を提供します。完全な
機能を使用するには、Vim 8 以降が必要です。一部のコマンドは、それ以前のバージョ
ンでは動作しません。

==============================================================================
☆設定                                                           *rust-settings*

このプラグインには、プラグインの動作を変更するために vimrc で定義できる変数が
いくつかあります。

一部の変数はバッファローカル (`:b` プリフィックス) に設定でき、バッファローカ
ルはグローバルの `g:` よりも優先されます。

                                                                *g:rustc_path*
g:rustc_path~
	このオプションを |:RustRun| と |:RustExpand| の中で使う rustc へのパス
	に設定します。未設定なら、"rustc" は $PATH の中で見つけられるでしょう:
	 >
	    let g:rustc_path = $HOME."/bin/rustc"
<

                                                  *g:rustc_makeprg_no_percent*
g:rustc_makeprg_no_percent~
	'makeprg' の初期値を "rustc %" の代わりに "rustc" に保つためにこのオプ
	ションを 1 に設定します: >
	    let g:rustc_makeprg_no_percent = 1
<

                                                              *g:rust_conceal*
g:rust_conceal~
	基本的な |conceal| サポートを有効にするにはこのオプションを設定します:
	 >
	    let g:rust_conceal = 1
<

                                                     *g:rust_conceal_mod_path*
g:rust_conceal_mod_path~
	パスをつなげるトークン "::" の |conceal| を有効にするにはこのオプショ
	ンを設定します: >
	    let g:rust_conceal_mod_path = 1
<

                                                          *g:rust_conceal_pub*
g:rust_conceal_pub~
	"pub" トークンの |conceal| を有効にするにはこのオプションを設定します:
	 >
	    let g:rust_conceal_pub = 1
<

                                                     *g:rust_recommended_style*
g:rust_recommended_style~
        このオプションを設定すると、Vim のインデントとテキスト幅の設定が Rust
        スタイルガイドのスタイル規則に準拠するようになる (つまり、インデントに
        は 4 つのスペースを使用し、'textwidth' を 100 に設定する)。このオプショ
	ンはデフォルトで有効になっている。無効にするには: >
	    let g:rust_recommended_style = 0
<

                                                                 *g:rust_fold*
g:rust_fold~
	|folding| を有効にするにはこのオプションを設定します: >
	    let g:rust_fold = 1
<
	値		効果 ~
	0		折り畳みなし
	1		中括弧ブロックは折り畳まれます。デフォルトではすべての
			折り畳みは開かれます。
	2		中括弧ブロックは折り畳まれます。'foldlevel' はグローバ
			ル値のままです (デフォルトではすべての折り畳みは閉じら
			れます)。

                                                  *g:rust_bang_comment_leader*
g:rust_bang_comment_leader~
	/*! シンタックスを使った複数行 doc コメントの先頭を保つためにこのオプ
	ションを 1 に設定します: >
	    let g:rust_bang_comment_leader = 1
<

                                                *g:rust_use_custom_ctags_defs*
g:rust_use_custom_ctags_defs~
        Rust 用にカスタマイズされた ctags 定義があって、rust.vim に含まれてい
        る定義を使用しない場合は、このオプションを 1 に設定します: >
	    let g:rust_use_custom_ctags_defs = 1
<

        NOTE: rust.vim の組み込み定義は、Tagbar Vim プラグインがインストールさ
        れていて、Universal Ctags が検出されない場合にのみ使用されます。これ
        は、Universal Ctags が Tagbar と併用される場合、すでに Rust の組み込み
        サポートを備えているためです。

        Note また、Universal Ctags 以外の ctags を使用する場合、Vim が異なる
        ソースファイルの定義に移動するために使用できる |tags| ファイルを生成す
        るときに自動的には使用されないことに注意してください。|tags| ファイル
        を生成したい場合は、`rust.vim/ctags/rust.ctags` を自分の `~/.ctags` に
        自由にコピーしてください。


                                                 *g:ftplugin_rust_source_path*
g:ftplugin_rust_source_path~
	このオプションを Rust ソースファイルの 'path' に前置されるべきパスに設
	定します: >
	    let g:ftplugin_rust_source_path = $HOME.'/dev/rust'
<

                                                       *g:rustfmt_command*
g:rustfmt_command~
	このオプションを $PATH の中の 'rustfmt' 実行可能ファイルの名前に設定し
	ます。指定されないなら 'rustfmt' になります: >
	    let g:rustfmt_command = 'rustfmt'
<
                                                       *g:rustfmt_autosave*
g:rustfmt_autosave~
	バッファを保存したときに自動的に |:RustFmt| を実行するためにこのオプ
	ションを 1 に設定します。指定されないなら 0 になります: >
	    let g:rustfmt_autosave = 0
<
        同じ目的で設定でき、グローバル設定をオーバーライドできるバッファローカ
        ルの b:rustfmt_autosave もあります。

                                        *g:rustfmt_autosave_if_config_present*
g:rustfmt_autosave_if_config_present~
        このオプションを 1 に設定すると、編集中のファイルに直接つながる親に
        `rustfmt.toml` ファイルが存在する場合に *b:rustfmt_autosave* が自動的
        に設定されます。設定されていない場合は、デフォルトで 0 になります: >
	    let g:rustfmt_autosave_if_config_present = 0
<
        これは、`rustfmt.toml` 構成を持つプロジェクトで、保存時にのみ
        `rustfmt` を実行する場合に便利です。

        同じ目的で設定できるバッファローカルの
        b:rustfmt_autosave_if_config_present もあり、グローバル設定をオーバー
        ライドできます。
                                                       *g:rustfmt_fail_silently*
g:rustfmt_fail_silently~
	'rustfmt' がエラーを |location-list| に入力するのを妨げるためにこのオ
	プションを 1 に設定します。指定されないなら 0 になります: >
	    let g:rustfmt_fail_silently = 0
<
                                                       *g:rustfmt_options*
g:rustfmt_options~
	このオプションを 'rustfmt' に渡すためのオプションの文字列に設定します。
	write-mode はすでに 'overwrite' に設定されています。指定されないなら
	'' になります: >
	    let g:rustfmt_options = ''
<
                                                       *g:rustfmt_emit_files*
g:rustfmt_emit_files~
	指定されていない場合、rust.vim は報告されたバージョンに基づいて
	rustfmt に渡す適切なパラメータを検出しようとします。それ以外の場合は、
	rustfmt を '--write-mode=overwrite' ではなく '--emit=files' (1 が指定
	されている場合) で実行するかどうかを決定します。 >
	    let g:rustfmt_emit_files = 0
<
                                                       *g:rustfmt_detect_version*
g:rustfmt_detect_version~
	1 に設定すると、"rustfmt" からのバージョン出力を解析しようとする。パ
	フォーマンス上の理由から、デフォルトでは無効になっている
>
	    let g:rustfmt_detect_version = 1
<
                                                       *g:rustfmt_find_toml*
g:rustfmt_find_toml~
	1 に設定すると、現在のパスから上方向に検索して `rustfmt.toml` ファイル
	を見つけようとする。パフォーマンス上の理由から、デフォルトでは無効に
	なっている
>
	    let g:rustfmt_find_toml = 1
<
                                                          *g:rust_playpen_url*
g:rust_playpen_url~
	使用する playpen の URL を上書きするためにこのオプションを設定します:
	 >
	    let g:rust_playpen_url = 'https://play.rust-lang.org/'
<

                                                        *g:rust_shortener_url*
g:rust_shortener_url~
	短縮 URL サービスの URL を上書きするためにこのオプションを設定します:
	 >
	    let g:rust_shortener_url = 'https://is.gd/'
<

                                                        *g:rust_clip_command*
g:rust_clip_command~
	このオプションを、Rust Play の URL をクリップボードにコピーするために
	OS で使用されるコマンドに設定します: >
	    let g:rust_clip_command = 'xclip -selection clipboard'
<

                                                       *g:cargo_makeprg_params*
g:cargo_makeprg_params~
	このオプションを cargo に渡すパラメータの文字列に設定します。指定しな
	い場合はデフォルトで '$*' になります: >
	    let g:cargo_makeprg_params = 'build'
<

                                                  *g:cargo_shell_command_runner*
g:cargo_shell_command_runner~
	このオプションを設定すると、cargo コマンド |:Cargo|、|:Cbuild|、
	|:Crun| 等のシェルコマンドの実行方法が変更されます。
	デフォルトでは、|:terminal| はターミナルウィンドウでシェルコマンドを非
	同期的に実行するために使用されます。ただし、コマンドの実行に |:!| を使
	用する場合は、以下のように指定できます: >
	    let g:cargo_shell_command_runner = '!'
<


Syntastic との統合                                            *rust-syntastic*
------------------

このプラグインは、Syntastic チェッカーと自動的に統合されます。提供されるチェッ
カーは、'rustc' と 'cargo' の 2 つです。後者はコードをビルドするために 'Cargo'
を呼び出し、前者は編集された単一の '.rs' ファイルをコンパイル対象として Rust
コンパイラ `rustc` に直接渡します。

最近では、Rust コードの構築に Cargo がほぼ独占的に使用されているため、'cargo'
がデフォルトのチェッカーになっています。 >

    let g:syntastic_rust_checkers = ['cargo']
<
変更したい場合は、`g:syntastic_rust_checkers` を別の値に設定できます。
                                          *g:rust_cargo_avoid_whole_workspace*
                                          *b:rust_cargo_avoid_whole_workspace*
g:rust_cargo_avoid_whole_workspace~
	Cargo ワークスペースの一部であるクレートを編集する場合、このオプション
	が 1 (デフォルト) に設定されていれば、'cargo' はワークスペースディレク
	トリではなく、そのクレートディレクトリで直接実行されます。0 に設定する
	と、この動作は回避されます。ただし、大きなワークスペースで作業している
	場合、Cargo コマンドに時間がかかることがあり、また Syntastic エラーリ
	ストにワークスペース内のすべてのクレートが含まれる場合があることに注意
	してください。 >
            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~
	1 に設定すると、Syntastic が cargo を実行する時に `--all-targets` オプ
	ションが cargo に渡され、パッケージ内のすべての対象の lint が可能にな
	ります。
	デフォルトは 0 です。

                                              *g:rust_cargo_check_all_features*
                                              *b:rust_cargo_check_all_features*
g:rust_cargo_check_all_features~
	1 に設定すると、Syntastic が cargo を実行する時に `--all-features` オ
	プションが cargo に渡され、パッケージのすべての機能の lint が可能にな
	ります。
	デフォルトは 0 です。

                                                 *g:rust_cargo_check_examples*
                                                 *b:rust_cargo_check_examples*
g:rust_cargo_check_examples~
	1 に設定すると、Syntastic が cargo を実行する時に `--examples` オプショ
	ンが cargo に渡され、サンプルが lint から除外されるのを防ぎます。サン
	プルは通常、クレートの `examples/` ディレクトリ下にあります。
	デフォルトは 0 です。

                                                    *g:rust_cargo_check_tests*
                                                    *b:rust_cargo_check_tests*
g:rust_cargo_check_tests~
	1 に設定すると、Syntastic が cargo を実行する時に `--tests` オプション
	が cargo に渡され、テストが lint から除外されるのを防ぎます。テストは
	通常、クレートの `tests/` ディレクトリ下にあります。
	デフォルトは 0 です。

                                                  *g:rust_cargo_check_benches*
                                                  *b:rust_cargo_check_benches*
g:rust_cargo_check_benches~
	1 に設定すると、Syntastic が cargo を実行する時に `--benches` オプショ
	ンが cargo に渡されます。ベンチは通常、クレートの `benches/` ディレク
	トリ下にあります。
	デフォルトは 0 です。

auto-pairs との統合                                            *rust-auto-pairs*
-------------------

このプラグインは、単一文字リテラルよりもライフタイム注釈で頻繁に使用される単一
引用符が重複しないように、auto-pairs プラグインを自動的に構成します。
                                                  *g:rust_keep_autopairs_default*
g:rust_keep_autopairs_default~

	Rust ファイルタイプの auto-pairs のデフォルトを上書きしません。デフォ
	ルトは 0 です。

==============================================================================
☆コマンド                                                     *rust-commands*

Cargo の呼び出し
----------------

このプラグインは、Vim から Cargo を呼び出すための非常にシンプルなショートカッ
トを定義します。

:Cargo <args>                                                       *:Cargo*
		指定された引数を使用して 'cargo' を実行します。

:Cbuild <args>                                                     *:Cbuild*
                'cargo build` のショートカット。

:Cclean <args>                                                     *:Cclean*
                'cargo clean` のショートカット。

:Cdoc <args>                                                         *:Cdoc*
                'cargo doc` のショートカット。

:Cinit <args>                                                       *:Cinit*
                'cargo init` のショートカット。

:Crun <args>                                                         *:Crun*
                'cargo run` のショートカット。

:Ctest <args>                                                       *:Ctest*
                'cargo test` のショートカット。

:Cupdate <args>                                                   *:Cupdate*
                'cargo update` のショートカット。

:Cbench <args>                                                     *:Cbench*
                'cargo bench` のショートカット。

:Csearch <args>                                                   *:Csearch*
                'cargo search` のショートカット。

:Cpublish <args>                                                 *:Cpublish*
                'cargo publish` のショートカット。

:Cinstall <args>                                                 *:Cinstall*
                'cargo install` のショートカット。

:Cruntarget <args>                                                 *:Cruntarget*
		現在開いているバッファに応じて、'cargo run --bin' または
		'cargo run --example' のショートカット。

フォーマット
------------

:RustFmt						       *:RustFmt*
		カレントバッファで |g:rustfmt_command| を実行します。
		|g:rustfmt_options| が設定されているなら、それらは実行可能ファ
		イルに渡されるでしょう。

		|g:rustfmt_fail_silently| が 0 (デフォルト) なら
		|g:rustfmt_command| で得たエラーを |location-list| に入力する
		でしょう。|g:rustfmt_fail_silently| が 1 に設定されるなら
		|location-list| に入力しないでしょう。

:RustFmtRange						       *:RustFmtRange*
		選択された範囲で |g:rustfmt_command| を実行します。その他の情
		報は |:RustFmt| を参照してください。


Playpen の統合
--------------

:RustPlay                                                          *:RustPlay*
		このコマンドは web-api.vim
		(https://github.com/mattn/webapi-vim で得ることができます) を
		インストールしている場合にだけ機能するでしょう。選択範囲、また
		は何も選択されていないなら、カレントバッファの全体を Rust
		playpen に送信して、playpen への短縮 URL とメッセージを出力し
		ます。

		|g:rust_playpen_url| は playpen へのベース URL で、デフォルト
		では "https://play.rust-lang.org/" です。

		|g:rust_shortener_url| は短縮サービスのベース URL で、デフォル
		トでは "https://is.gd/" です。

		|g:rust_clip_command| は、playpen の URL をシステムのクリップ
		ボードにコピーするために実行するコマンドです。


単一の Rust ファイルの評価
--------------------------

NOTE: これらのコマンドは、スタンドアロンの Rust ファイルで作業する場合にのみ役
立ちますが、これは一般的な Rust 開発では通常当てはまりません。Vim を使用して
Rust クレートをビルドする場合は、Vim の make、Syntastic、または他のプラグイン
の機能を使用する必要があります。


:RustRun  [args]                                                    *:RustRun*
:RustRun! [rustc-args] [--] [args]
		カレントファイルをコンパイルして実行します。カレントファイルの
		変更が保存されていないなら、|:update| を使って最初に保存される
		でしょう。カレントファイルが無名バッファなら、最初に一時ファイ
		ルに書き込まれるでしょう。コンパイルされたバイナリはいつも一時
		ディレクトリに置かれますが、カレントディレクトリから実行されま
		す。

		|:RustRun| に与えられた引数はコンパイルされたバイナリに渡され
		るでしょう。

		! が指定されるなら、代わりに引数は rustc に渡されます。"--" 引
		数はバイナリに渡される引数から rustc の引数を分けるでしょう。

		|g:rustc_path| が定義されるなら、rustc へのパスのように使われ
		ます。それ以外の場合は rustc が $PATH の中で見つけられうると見
		なされます。

:RustExpand  [args]                                              *:RustExpand*
:RustExpand! [TYPE] [args]
		--pretty を使ってカレントファイルを展開して新しいウィンドウに
		その結果を表示します。カレントファイルの変更が保存されていない
		なら、|:update| を使って最初に保存されるでしょう。カレントファ
		イルが無名バッファなら、最初に一時ファイルに書き込まれるでしょ
		う。

		|:RustExpand| に与えられた引数は rustc に渡されるでしょう。こ
		れは様々な --cfg 設定を指定するのに大いに向いています。

		! が指定されるなら、最初の引数は rustc --pretty に渡すための展
		開種類です。それ以外の場合は "expanded" になるでしょう。

		|g:rustc_path| が定義されるなら、rustc へのパスのように使われ
		ます。それ以外の場合は rustc が $PATH の中で見つけられうると見
		なされます。

:RustEmitIr [args]                                               *:RustEmitIr*
		カレントファイルを LLVM IR にコンパイルして新しいウィンドウに
		その結果を表示します。カレントファイルの変更が保存されていない
		なら、|:update| を使って最初に保存されるでしょう。カレントファ
		イルが無名バッファなら、最初に一時ファイルに書き込まれるでしょ
		う。

		|:RustEmitIr| に与えられた引数は rustc に渡されるでしょう。

		|g:rustc_path| が定義されるなら、rustc へのパスのように使われ
		ます。それ以外の場合は rustc が $PATH の中で見つけられうると見
		なされます。

:RustEmitAsm [args]                                             *:RustEmitAsm*
		カレントファイルをアセンブリにコンパイルして新しいウィンドウに
		その結果を表示します。カレントファイルの変更が保存されていない
		なら、|:update| を使って最初に保存されるでしょう。カレントファ
		イルが無名バッファなら、最初に一時ファイルに書き込まれるでしょ
		う。

		|:RustEmitAsm| に与えられた引数は rustc に渡されるでしょう。

		|g:rustc_path| が定義されるなら、rustc へのパスのように使われ
		ます。それ以外の場合は rustc が $PATH の中で見つけられうると見
		なされます。


テスト(群) の実行
-----------------

:[N]RustTest[!] [options]                                       *:RustTest*
		カレントバッファが "cargo test" コマンドで cargo プロジェクト
		内にある場合、カーソル下のテストを実行します。コマンドがカーソ
		ル下のテスト関数を見つけられなかった場合、エラーメッセージを表
		示して停止します。

		N が指定された場合、新しいウィンドウのサイズが N 行または N 桁
		に調整されます。

		! が指定された場合、現在のカーソル位置に関係なくすべてのテスト
		が実行されます。

		[options] が指定された場合、"cargo" コマンドの引数に渡されま
		す。

		カレントバッファが cargo プロジェクトの外にある場合、コマンド
		はフォールバックとして "cargo test" の代わりに "rustc --test"
		コマンドを実行します。rustc では特定のテスト関数を実行する方法
		がないため、! の追加に関係なくすべてのテストが実行されます。こ
		の場合、[options] は "rustc" コマンドの引数に渡されます。

		オプションの修飾子を受け取ります (|<mods>| を参照): >
		    :tab RustTest
		    :belowright 16RustTest
		    :leftabove vert 80RustTest
<
rust.vim のデバッグ
-------------------

:RustInfo                                                          *:RustInfo*
		Vim Rust プラグインのデバッグ情報を出力します。

:RustInfoToClipboard                                      *:RustInfoClipboard*
		Vim Rust プラグインのデバッグ情報をデフォルトのレジスタに保存
		します。

:RustInfoToFile [filename]                                   *:RustInfoToFile*
		Vim Rust プラグインのデバッグ情報を指定されたファイルに保存し、
		上書きします。

==============================================================================
☆マッピング                                                     *rust-mappings*

このプラグインはぶら下がりインデントを支援するような |[[| と |]]| のマッピング
を定義します。

==============================================================================
 vim:tw=78:sw=4:noet:ts=8:ft=help:norl:
