ほのぼのとまったりアプリ開発日誌

ほのぼのがまったりとデスクトップアプリを作る開発日誌

VSCode と hspc v3 で構文エラーをエディタ上に表示する

本記事では、VSCodeのタスク機能を使用してhspc v3で実装されたhspc lint --backgroundコマンドによる構文エラー診断結果をエディタ上に表示させるタスク設定を説明します。

f:id:honobonopoo:20211015223633p:plain
エディタ上に"スクリプトファイルが見つかりません"という構文エラーが表示されている

必要なもの

VSCodeのタスク機能を使用しますので、language-hsp3拡張機能の導入は任意になります。

簡単な設定方法

VSCodeのメニューバーから、"ターミナル">"タスク構成...">"テンプレートから tasks.json を生成">"Others"と進み、開かれたtasks.jsonファイルに下記を上書き、もしくは追記します。

必要に応じて、tasks.jsonファイルは編集できます。

hspcにpathを通していない場合、tasks[{"command"}]の文字列にhspcの絶対パスを記入してください。

- "command": "hspc",
+ "command": "C:\\hsp36\\hspc.exe",

未初期化変数を診断結果に表示したい場合、"--iniv"を削除してください。

- "args": ["lint", "--background", "--iniv", "${workspaceFolder}\\src"],
+ "args": ["lint", "--background", "${workspaceFolder}\\src"],

診断する対象ディレクトリを指定するには、"${workspaceFolder}\src"を書き換えてください。プロジェクトディレクトリ直下を指定する場合は

- "args": ["lint", "--background", "--iniv", "${workspaceFolder}\\src"],
+ "args": ["lint", "--background", "--iniv", "${workspaceFolder}"],

に書き換えてください。

vscode/tasks.json

{
  "version": "2.0.0",
  "tasks": [{
    "label": "hspc lint",
    "type": "shell",
    "args": ["lint", "--background", "--iniv", "${workspaceFolder}\\src"],
    "command": "hspc",
    "group": "none",
    "problemMatcher": [
      {
        "owner": "hsp3",
        "fileLocation": "autoDetect",
        "pattern": [
          {
            "regexp": "^(.+)\\((\\d+)\\): (info|error) (?:\\d+)?(.+)$",
            "file": 1,
            "line": 2,
            "severity": 3,
            "message": 4
          }
        ],
        "background": {
          "activeOnStart": true,
          "beginsPattern": "^\\d{1,2}:\\d{1,2}:\\d{1,2} - File change detected\\. Starting compilation\\.$",
          "endsPattern": "^\\d{1,2}:\\d{1,2}:\\d{1,2} - Compilation complete\\. Watching for file changes\\.$"
        }
      }
    ],
    "isBackground": true
  }]
}

Wineについて

Ubuntu 21.04 のWine環境にて、子ディレクトリを監視できない症状を確認しました。解決予定はありませんが、迂回策として--nosubdirオプションの併用と、複数のタスク実行で補えます。

hspc v3 のリリースノートは執筆中なので、でき次第公開します。