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

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

hspc v2.0.2 を HSPコンテスト2019 に投稿しました。

セミ達が鼓膜敗れそうな程に鳴く季節です。麦茶で厚さを凌いでいます。

今年も無事に hspc を更新できましたので、コンテストへ応募しました。

hspc v2 の主な更新概要

今年は hspc のメジャーアップデートです。既知の不具合修正や、取り回し易いように作り直しました。

  • ダブルクォーテーションに対応しました。
    • これで、空白文字を含むパスを囲って対応することができます。
  • -r で実行するスクリプトに、引数を渡せるようになりました。
  • ライセンス表記とヘルプドキュメントが、hspc.exeに同梱されました。
    • これで、readme.mdファイルをコピー&ペーストする必要がなくなりました。
  • 呼び出し元のカレントディレクトリを認識できるようになりました。

その他、hspcのメッセージにIDを付けました。UTF8なターミナルでも数字が文字化けしない特徴を使って対応しやすくしました。 (hspcのデバッグ時に、どこのメッセージか調べるためでもあります。)

language-hsp3 環境への導入方法について

VSCode版は拡張機能側でv2に対応していますので、hspc.exeを上書きするだけです。

atom版は、パッケージ設定「Delete quotation character」オプションのフラグを閉じてください。空白文字を含むファイルパスを正しく指定できない問題が生じます。

Wine環境

Kubuntu仮想マシンに入れて、VSCodeやWineをインストールして、language-hsp3 for VSCodeのwineModeオプションのデバッグを行っています。

ほぼ素のWine-4.0 (Ubuntu 4.0-1)環境で動作(Kubuntu19.04)するところを確認できました。

ただし、今後Wineでhspc v2が動く保証はできません。ご了承ください。


暑いです。記憶にないほどに今年は暑いです。スイカに噛り付いています。

部屋の中だからといって、水分補給をおろそかにすると、めまいなどひどい目に遭います。しっかり水分摂取しましょう。

砂糖もののお菓子より、タンパク質な食べ物を取って、夏バテを防止しましょう。

もちろん、ほどほどに頑張りましょう。ほどほどです。

language-hsp3 for VSCode を公開しました。

梅雨の季節になりました。木くらげ酢の物を食べています。

令和に入る前頃にVSCodeでemojiにヒットする文字プロパティを見つけることができたので、atom向けに公開している language-hsp3 の完全移植ができました。

marketplace.visualstudio.com

移植元と相違点があります。主に機能追加と不具合修正です。

構文ハイライト

  • 数字
    • 負号を演算子としてハイライトしていたのを数字の一部に含むよう変更しました。
    • 浮動小数点記法が正しくハイライトされないのを修正しました。
  • ラベル
    • 命令/関数の第一引数に書かれたラベルをハイライトできるようになりました。
  • 命令
    • 命令をハイライトできるようになりました。
  • 変数
    • 変数初期化文を変数としてハイライトできるようになりました。

コマンド

wineを簡単に使用する機能を追加しました。 wineでコンパイラを実行、ファイルパスをwinepathでWindows形式に変換するので、hspcmp.exeも使用できるようになります。

ショートカットキー

F5は、デバッガー機能で埋まっていたので、Ctrl-K F5に設定しました。 Ctrl-Kを押した後にf5を押すことで実行されます。 Ctrl-F9は移植元と同じです。

VSCode のエディタ設定

今現在、HSP3のサンプルソースファイルで使われるコードページの多くは Shift_JIS です。

VSCodeをインストールした直後だと、コードページの既定値はUTF-8になっています。

そのため、HSPのソースファイルを開くたびに、Shift_JIS で開き直す場面に出会うと思います。

VSCodeには、言語ごとにエディタの設定を変更する機能が備わっています。

vscode - Visual Studio Codeで言語ごとにインデントの設定をしたい - スタック・オーバーフロー

qiita.com

VSCodeの設定画面で ”ワークスペース” を選択した後に "{}" マークをクリックして、開かれた settings.json ファイルに以下のJSONコードを設定してみてください。

{
  "[hsp3]" : { "files.encoding": "shiftjis" },
  "files.eol": "\r\n"
}

これで、*.hsp, *.as ファイルは Shift_JIS が既定のコードページに設定されます。

HSPスクリプトエディタの仕様に合わせるなら下記のように設定します。

{
  "[hsp3]" : {
    "files.encoding": "shiftjis",
    "editor.detectIndentation": false,
    "editor.insertSpaces": false,
    "editor.tabSize": 4
  },
  "files.eol": "\r\n"
}

蒸し暑いと酢の物が食べたくなります。鶏のから揚げには、ゆず酢やレモン果汁をかけています。これでしっかり体力を補います。

熱中症、脱水症に気を付けて、無理せず頑張りましょう。

linter-hsp3 v0.2.0 を公開しました。

まだまだ寒い気候が続いています。今年も旬の菜の花を頂きました。美味しかったです。

atomにHSP3のソースファイルをコンパイルしてエラーをlinterに反映させるパッケージ、linter-hsp3 をアップデートしました。

主な変更点は非同期化で起こったhsptmpファイルの不整合が生じる問題の修正と、全体的にPromise化したことです。

v0.1.Xでは、hsptmpファイルに対して重複して解析が走っていました。hsptmpファイルの解析中に新しいバージョンがhsptmpファイルに書き込まれることで、古い方の処理で例外が生じていました。

v0.2.0には、async-lock モジュールを使用して、排他制御を行いました。解析処理が一つずつ行われるので、linter-hsp3の処理速度は落ちますが、安定したと思います。

さらに、エラーを起こしたソースファイルのコードページ推測に encoding.js(モジュール名はencoding-japanese)を使用しました。文字化けの抑制を図ります。

上記の変更を加える為にコールバック地獄と化した処理部分を書き直しました。

処理の大部分はPromiseになりました。すごく書きやすかったです。

インフルエンザが猛威を振るっています。外出の際はうっかり目や鼻をこすらないよう気を付けて。外で携帯電話を触ったら、忘れず帰宅時に消毒しましょう。