rust
VSCode

VSCodeのRustコンパイラ出力が2018年11月から見やすくなります(設定の必要あり)

VSCodeに以前から欲しかった機能が入ったので紹介したいと思います。

今回紹介する機能は https://code.visualstudio.com/updates/v1_29 に書かれた下記の機能についてです。

Tasks
Clear terminal before executing task

A new property clear was added to the task presentation configuration. Set the clear property to true to clear the terminal before the task is run.

以前の状況

次のような操作でRustのコードをビルドしている時のことです。

  • 拡張機能 Rust (rls) を入れておく
  • 拡張子.rsのファイルを開く
  • メニューの "ターミナル" > "既定のビルド タスクの構成..." にて .vscode/tasks.json を生成
  • Ctrl + Shift + B でビルド

ここで、連続コンパイルすると・・・

image.png

このように、ターミナルが再利用されていました。
コンパイルエラーが無ければ問題はありませんが、エラーがあると非常に見づらくなります。:confused:

image.png

ね?見づらいでしょう?
前回のエラーと今回のエラーがごちゃごちゃですよ。:frowning2:

しかし、この動作は .vscode/tasks.json で変更することができます。
下記のように presentation プロパティを追加します。

tasks.json
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cargo",
            "label": "cargo build",
            "command": "cargo",
            "args": [
                "build"
            ],
            "problemMatcher": [
                "$rustc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            // ======= ここから追加 =======
            "presentation": {
                "panel": "new",
            }
            // ======= ここまで追加 =======
        }
    ]
}

"panel": "new" と指定することにより、タスクを実行する度に新しいターミナルが作成されます。

image.png

このように、何度ビルドしても表示されるのは最新のエラーだけ!とても見やすい。:grinning::sparkles:

ですが、別の問題もあります。ターミナルが無限に増えてしまうのです。:sweat_drops:

image.png

新しい機能を使う

2018年11月(version 1.29)で追加された機能を使うとこの問題は解決します。 .vscode/tasks.json を次のように書き換えます。

tasks.json
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cargo",
            "label": "cargo build",
            "command": "cargo",
            "args": [
                "build"
            ],
            "problemMatcher": [
                "$rustc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            // ======= ここから追加 =======
            "presentation": {
                "panel": "dedicated",
                "clear": true
            }
            // ======= ここまで追加 =======
        }
    ]
}

"panel": "dedicated" はこのタスク用にターミナルを新規作成し、使いまわすことを示します。

また、"clear": true は version 1.29 からの新機能で、タスクの実行時にターミナルをクリアすることを示します。

image.png

エラーが見やすい!しかもターミナルが無限に増えることもなくなりました!:sparkles::grinning::sparkles: