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

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

Atom版 language-hsp3 の更新終了時期について

2023/02/01 更新

github.blog

上記リンク先が示す問題により、Atomを継続して使用するには、v1.60.0へダウングレードする必要があります。

github.com

以下2022/6/15付けの記事になります。

GitHubからAtomの段階的終了が案内されました。

github.blog

language-hsp3 for Atom の今後の方針としてHSP3.7の更新対応を行い、年内をもって主要な更新を終了する運びとなりました。

Atom向けパッケージたちも同じ期間で主要な更新を終了します。

開発途中のautocomplete-hsp3は、language-hsp3 for VSCodeへ移植中です。

Atom向けに初めて投稿したパッケージで、感慨深いプロジェクトでした。

ご使用頂いた皆様、honobonosun/language-hsp3リポジトリ関係者様、Atom関係者様、感謝申し上げます。

Atom版終了までの間、姉妹のVSCode版と一緒に開発を続けます。

VSCodeへの移行後含め、今後もお役に立てられれば幸いです。

hspc v3.3.4 を HSP3プログラミングコンテスト2021 に応募しました。

寒くなっても麦茶を常備しています。最近はハンバーグや餃子が主食になっています。

今年も無事HSPコンテストに応募することができました。hspcのメジャーアップデートになります。変更点がいっぱいです。

hspc v3.3.4

hspc v2との互換性はそのままに、標準出力に手を加えました。

コンソールのコードページを取得して、内部のShift_JIS文字列をエンコード、出力します。これで文字化けを解決しました。

逆に、Shift_JISで表現できない文字を渡した場合、文字は?に置き換わります。hspc自身はUnicodeに対応していません。

コマンド機能はモジュール化して、お互いに機能を呼び出せるようにしました。lintコマンドがcompileコマンドを使用することで、スムーズな機能連携を行えるようになりました。

新機能のすべてはコンソールから利用可能です。

compile コマンド

HSP3.6対応化と同時に新機能を追加しました。オプションから使用できます。

オプション文字 概要
--wait -rで実行する子プロセスが終了するまでhspcを待機させます。
--iconins iconinsツールを自動実行ファイル作成時に使用します。
iconinsを使用するには、HSP3.5以上の環境へインストールしてください。
--strmap strmapファイルを作成します。
hspc --strmap "out/app.strmap" app.hsp
同梱した環境もしくは、HSP3.6以上の環境へインストールしてください。
-R -r --waitエイリアスになる一文字オプション。
-M iconinsツールを使用せずに自動実行ファイル作成を行う一文字オプション。
従来の-mオプションは、--iconinsオプションが有効になります。(-M --iconinsエイリアス
-S --strmapオプションの一文字オプション版です。-oオプションと同じ方法で名前を指定できます。
-D 中間ファイルを削除します。-rオプションを併用している場合、--waitオプションも併用することが必須になるよう仕様変更されました。

そのほかは、v2で相対パス絶対パスへ変換していた工程をv3から省略しています。

lint コマンド

Atomのlinter-hsp3パッケージをhspcに移植しました。これでコンソールから構文エラーを見つけることができるようになりました。

データ管理にSQLeleを使用していますので、このコマンドを使用するには、hspc.exeと同じディレクトリ上にSQLite3.dllが必要です。

オプション文字 概要
--watch 指定したディレクトリを監視します。変更があれば診断結果を随時更新します。
--allow MS-DOSワイルドカードで監視対象に含めるファイルパス
既定値として、*.hsp*.asが登録されます。
--ignore MS-DOSワイルドカードで無視対象に含めるファイルパス
既定値として、*\.git\*が登録されています。
--ignorednoninitvar 結果から未初期化変数を非表示にします。
--iniv --ignorednoninitvarオプションのエイリアスです。
--onelineprint 診断結果を一行で表示します。
--relativepath ファイルパスを相対パスで表示します。

lintコマンドには、複数のオプションとファイルパスを指定することができます。

ファイルパスを指定した場合、最初の一回だけ診断します。

--watchオプションは、指定されたディレクトリ上の変化を監視します。ファイルを直接監視できないので、ファイルを監視したい場合、ファイルを置いているディレクトリを指定してください。一つのファイルを直接監視する機能はありません。

doc コマンド

hspc.exeを置いたhsphelpディレクトリを検索して一致したキーワードのドキュメントを閲覧します。

動作には、HSP3.6のhspcmp.dllが必要です。

完成度に思うところがあるので、テンプレート共々梃入れしたいです。

寒い朝にはニンニクが食べたくなります。角切りにしてバターと溶き卵でスクランブルエッグにするとおいしいです。お好みで塩こしょうもかけちゃいます。

急な温度変化で体調を崩しやすい季節です。風邪を引かないよう、手洗いうがいをしっかりして感染予防します。寒いときは無理せずホッカイロや室内に退避しましょう。

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 のリリースノートは執筆中なので、でき次第公開します。