Posted at

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: