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

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

toolset-hsp3 v1.1.0 を公開しました。

このたびの災害により被災された皆様に心よりお見舞い申し上げます。

toolset-hsp3 v1.1.0

プレビュー版から脱するメジャーアップデートになります。

ホスト側VSCodeで既定のインストール先にインストールされているHSP3開発環境をglobで検索して、言語バーから選択可能にします。選択された環境をhsp3rootとして保存して、他の拡張機能VSCodeのターミナルに情報を提供することが主な機能となります。

使い方

拡張機能は、「language-hsp3 for VSCode」は事前にインストールされていること、HSP3開発環境が3.51以降のバージョンであり、この説明は、インストーラー既定のインストール先(Cドライブ)にインストールされていることを前提とします。

拡張機能は、hspファイル、asファイルが存在するディレクトリやファイルそのものを開くことで起動します。

事前にHSP3_ROOT環境変数を設定すれば、全自動で適用されます。

HSP3_ROOT環境変数には、HSP3開発環境のディレクトリパスを記述してください。

Windowsはhsp3cl.exe、WSL2と、Ubuntuは、OpenHSPのhsp3clで動作確認しております。

また、以前から表示言語の日本語と英語の両対応を試用を行っており、今回のアップデートで成果物を導入しました。

他の拡張機能へ設定を上書きする

v1から、「他の拡張機能の設定を上書きする」機能を持つ、Overrideモジュールを実装しました。既定では無効化されています。

Readme.mdには、vain0x様作成の拡張機能の設定方法を記述しております。

いつも素晴らしいソフトウェアを開発していただき、誠にありがとうございます。

ログシステム

ログ出力を専用のモジュールでまとめることで、各モジュールごとにバラバラで実装されている構造を改良しました。

これにより、出力ペインに複数のログ出力が分かれて表示されなくなり、ログの更新通知や、下記記事の「処理後に強制的に出力ウィンドウにフォーカスされる」の改善を行うことができました。

qiita.com

記事の公開、ご意見ありがとうございます。励みになります。

このモジュールは、language-hsp3 for VSCode へ移植予定です。

開発小話

表示言語

表示言語を切り替える機能がVSCodeにあります。今まで作成してきた拡張機能は、その機能に対応していなかったため、英語表記のみに限定していました。これは、日本語フォントが無い環境で、設定画面が読めなくなることを防ぐためでした。

今回、vscode.l10nと、i18n、i18nextの試用比較を行いました。

  • 導入方法が既存の枠組みに入れられること。
  • 引数を付与できること。
  • VSCode拡張機能i18n Ally」の設定が簡単で、プレビュー表示ができたこと。
  • TypeScriptの型システムを活用して、コード内の存在しないキーをエラーにすること。

これらを評価して、i18nextを採択しました。

VSCodeスクリーンショット、エディタ上のtメソッドのキー文字が、「i18n Ally」により、実際に表示される文字で試写されている。

特に、存在しないキーをコンパイルエラーにする点です。型システムによる入力補完も使用できるので、誤記する心配が無くなりました。キーのプレビューも、ソースの可読性に寄与しました。

オブジェクト型の上書き設定方法

v1.1.0で追加された「オブジェクト型な設定の上書き機能」は、従来と設定方法が違います。

コマンドラインを記述する性質上、空白文字とパスの結合を考慮した結果、valuesプロパティは、(string | string)型になりました。(例:`[["%HSP3_ROOT%", "hspc"], "-v"])

{
  "toolset-hsp3.override.objects": [
    {
      "id": "toolset-hsp3.test.object",
      "path": "neko.koneko",
      "values": [["%HSP3_ROOT%", "hspc"], "-v"],
      "platform": "win32",
      "scope": "Global"
    }
  ]
}
  • idプロパティには、上書き対象の設定IDを記述します。
  • pathプロパティには、オブジェクトのプロパティの親子関係をドットで繋げて記述します。
  • valuesプロパティには、上書きする文字列を記述します。最初の配列は空白文字で結合されます。さらに配列にすると、プラットフォームに合わせたファイルシステムのセパレーターで結合されます。空白文字があればダブルクォーテーションで囲まれます。
  • platformプロパティには、動作するプラットフォームを記述します。省略することで制限なしになります。
  • scopeプロパティには、設定の上書き先を記述します。

pathプロパティの仕様については、下記のサイトを参照してください。

mrodrig.github.io

(配列のサポート関係で、他のモジュールに移行を検討するかもしれません。)

更新内容は以上となります。本年度は、language-hsp3 for VSCode の OpenHSP対応を行っていきます。

hspc v3.4.3、v3.5.1 をHSPプログラミングコンテストに応募、公開されました。

暑い日が続いています。カボチャとジャガイモを蒸かしていただきました。オイシイオイシイ...

今年も無事、コンテストへ応募できました。

今回、hsp37beta対応化について、コンテスト事務局とおにたま様にご教授いただきました。ありがとうございます。

hspc v3.5.1

主な更新は3つになります。

  • hsp3rootが空の場合、自動実行ファイル作成が失敗する不具合を修正しました。
  • ショートオプションにレベルを追加しました。
  • maker v3 による自動実行ファイル作成方法を実装しました。

ショートオプションのレベルとは -m3 のように、ショートオプション文字の直後に数字を追加することで、その数字のレベルで動作段階を調整することができるようになりました。

  • -m、-M コンパイルしたファイルを対象に自動実行ファイル作成を行います。
    • 0 既定値です。自動実行ファイル作成の方法は自動判別されます。
    • 2 従来の手法で自動実行ファイル作成を行います。
    • 3 hsp37beta対応の自動実行ファイル作成を行います。
  • -D hspcコマンド終了時に、ファイルを削除します。
    • 0 既定値です。中間ファイルを削除します。
    • 2 上記に加えて、packfileを削除します。

レベル0を基本として、どのバージョンを使用するのか、どの段階まで処理するのかを設定できます。

レベルの実装により、要望の多かったpackfileファイル削除を"-D2"と記述することで、オプションの増加を抑えつつ、後方互換性を保ったまま実装することができました。

暑いので、バテても作れる簡単な料理をしていました。白ネギみじん切りに料理酒、豚挽肉をまぜこねて肉団子です。沸騰した鍋に生姜を薄スライスしたものを入れて、肉団子を湯がきます。薄味に仕上がるので、お好みで胡椒や鶏ガラスープの素などで味を調えていただきます。

私は火が通っていないのがこわいので、更に電子レンジで追い加熱します。

残暑が厳しい季節です。室内で熱中症にならないように、こまめな水分補給を忘れず気をつけましょう。

language-hsp3 for VSCode v1 のWorkspace Trust(制限モード)について

平素よりlanguage-hsp3 for VSCodeをご利用いただき、誠にありがとうございます。

恒久的な制限モード解除(security.workspace.trust.enabledをfalseに設定)に伴うリスクを今一度ご確認いただきたく存じます。

参考先

  1. 「Visual Studio Code」に不審なリポジトリを安全に扱える「制限モード」
  2. Workspace Trust
  3. VS Code の Workspace Trust(ワークスペースの信頼)について

v1と制限モード時の動作について

2023/08/12 v1.2.0 更新

v1.2.0 以降でディレクトリ設定を読み込まない仕様変更を行うことで、制限モードで動作するように更新しました。

制限モードで一部コマンドが実行できない場合、VSCodeのユーザー設定側の見直しと更新をお願いいたします。

更新前内容

language-hsp3 for VSCode v1は、制限モード実装前、atom版を元にした拡張機能です。そのため、制限モードを前提にしていない機能構成のため、動作しません。

この拡張機能が制限モードに対応するには、一部機能を制限する仕様変更が必要になっています。

メジャーバージョンアップで、この互換性を切り崩すことで、対応する予定です。

Workspace Trustの対応について #45

ご不便をおかけします。恐れ入りますが、バージョンアップまでの間、下記の対応でご利用いただきたく存じます。

恒久的な制限モード解除を使用しない方法

  • VSCode Web版(vscode.dev)の場合、申し訳ございません。未対応のため、ローカルPCに移してご使用ください。
    • Web版は、メジャーバージョンアップで対応予定です。
  • ローカルPCの場合、各ファイル内容をご確認の上、制限モードをそのディレクトリに限定した解除で、ご使用ください。

お手数をおかけして申し訳ありませんが、よろしくお願いいたします。