ウチツクシ

ゲームをしたり作ったり

Notepad++でHSPスクリプトを編集・実行できるようにする

面白そうなので便乗。6日目の記事になる予定です。はてなブログの予約投稿の実験も兼ねて。

概要

タイトル通りです。あとシンタックスハイライトや自動補完用キーワード集、ラベル・ユーザー定義命令のリスト表示など。自作ツールも使っててその紹介も兼ねてます。

MacLinux での環境構築の投稿もありますが、この記事は Windows 用です。当方の環境は Windows10、Notepad++ 7.2.2、HSP 3.5β4。後で出てくるHSPのキーワード用ファイルも 3.5β4 で作ってます。

なんでNotepad++?

ロゴのキャラがかわいい!

標準のスクリプトエディタでも最低限できるんですが、自動補完とか便利な機能に慣れてしまうともう戻れないのです。もちろん他にも良いエディタはあると思います。日本語対応とか考えるとサクラエディタが良さそうだし、新しい Sublime Text とか Visual Studio Code も良さそうなんですが、詳しい導入方法がよく分からんのです。Vimは、なんか次元が違う…
webのスクリプトコピペして実行したり数行のスクリプト書くときは TeraPad 使ってます。軽い。


そしてこんな記事書いといて何ですがNotepad++をHSPで使うのをオススメはしません。どっちかと言えばサクラエディタをオススメします!?

それでもOKという方はどうぞ。


インストール

言わずもがな!βテスト版などはダウンロード Archive - おにたま(オニオンソフト)のおぼえがきでダウンロードできます。

download のページに行くとインストール形式やZIP形式色々あります。ここでは Notepad++ Installer 32-bit x86 で説明します。エディタ更新時などでもインストール形式の方が楽なので。64bit版はプラグインがまだ未対応みたい。

f:id:K-s:20161203191528p:plain:h100 f:id:K-s:20161203191602p:plain:h100 f:id:K-s:20161203191617p:plain:h100 f:id:K-s:20161203191632p:plain:h100

ダウンロードしたインストーラを実行して進めます。日本語、ライセンス、インストール先を決定。

f:id:K-s:20161203192209p:plain:h140

言語や自動補完用ファイル、配色等のテーマ、プラグインなど。全部チェック。

f:id:K-s:20161203192919p:plain:h140

3つオプションがありますが、基本全部チェックなしでいいと思います。
1番目は設定ファイルを %APPDATA% フォルダに保存しないようにするオプション。Notepad++本体があるフォルダに保存するようにします。
2番目はプラグインを %APPDATA% の Notepad\plugins フォルダから読み込むようにするオプション。セキュリティ問題があるから分かる人だけチェックしてね。
3番目はデスクトップにショートカットを作るかどうか。

f:id:K-s:20161203194157p:plain:h140 f:id:K-s:20161203194221p:plain:h140

インストール完了。カメレオン可愛い。

HSPコンパイル補助ツール

Notepad++でHSPスクリプトコンパイル実行できるようにします。

HSPの標準エディタには「外部ファイル実行」というのがあり、それを使うと他のエディタで編集したスクリプトコンパイルできます(マニュアルに載っている方法)。ただしこの方法だと標準エディタを起動しておいたりファイル名を指定する必要があって少し面倒です。

そこで(見た目上)Notepad++だけでコンパイルできるように橋渡しとなるツールを設定します。
ツールは以下よりダウンロード。

cmptage.exe をHSPのインストールフォルダにコピーしたら、Notepad++ の "実行" メニューを開いて以下を登録。HSPインストールフォルダ は合うように書き換えてください。

"HSPインストールフォルダ\cmptage.exe" "$(FULL_CURRENT_PATH)"

f:id:K-s:20161203212317p:plain:h140 f:id:K-s:20161203204639p:plain:h140

パスと$(FULL_CURRENT_PATH)はダブルクォートで囲ってください。ショートカットは他のと被ると "CONFLICT FOUND!" と下の方に出ます。ショートカットの編集は後でも変更できます。

登録が終わるとメニューかショートカットでスクリプトコンパイル実行できるようになります。

f:id:K-s:20161203210419p:plain:h140

HSPスクリプトを読み込んでちゃんと実行されたら成功です。
(編集したスクリプトは一度保存して実行する必要があります。保存も含めて一発で実行する方法は後述)

同様に、

"HSPインストールフォルダ\cmptage.exe" "$(FULL_CURRENT_PATH)" /d

デバッグウィンドウ表示、

"HSPインストールフォルダ\cmptage.exe" "$(FULL_CURRENT_PATH)" /me

でexe作成になります。
これらオプションは Cmptage の説明を参照してください。

あとワンキーヘルプのHDLも登録しておきます。

"HSPインストールフォルダ\hdl.exe" $(CURRENT_WORD)

標準エディタと同様、カーソルのある単語でヘルプが起動するようになります。

シンタックスハイライト設定

HSPの命令などが色分けされるようにします。

その前に、初期設定だと Notepad++ の"言語"メニューが長いのでまとめて短くしときます。

f:id:K-s:20161204035338p:plain:h140

"設定" > "環境設定…" > "言語メニュー" の "言語メニューをまとめる" にチェックして Notepad++ を終了。

以下より Download ZIP、展開します。

設定をインポートします。

f:id:K-s:20161204041149p:plain:h140 f:id:K-s:20161204041207p:plain:h140

Notepad++を起動、"言語" > "言語を定義…" の "インポート…" でさっき展開したファイルの "NppHspLang.xml" を開きます。

"言語"メニューに HSP が追加されていればインポート完了です。

f:id:K-s:20161204043342p:plain:h140 f:id:K-s:20161204043353p:plain:h140 f:id:K-s:20161204043403p:plain:h140

あとはスタイル設定でいい感じの色合い・フォントに設定してください。

上でインポートした設定は HSP のラベルも色分けされるようになっていますが、コードの書き方によっては乗算と競合してしまい上手く色分けされません。

f:id:K-s:20161204110117p:plain f:id:K-s:20161204110122p:plain

左のようになってしまいます。右のようにするには、

f:id:K-s:20161204110424p:plain:h140 f:id:K-s:20161204110432p:plain:h140

"言語" > "言語を定義…" で "言語名" を HSP にして "演算子・区切り記号"タブの 演算子2 にある * を 演算子1 に移動させます。

ただしそうすると今度はラベルが色分けされません。自分は演算子の前後はスペース開けて書くようにしているため問題ないのですが、気になる場合は変えてください。両立できる設定があるか分かっていません。

関数登録

f:id:K-s:20161204111910p:plain

自動補完でHSPの命令がリストされるようにします。

上のシンタックスハイライト設定のところでダウンロードして展開した中にある "hsp.xml" を Notepad++インストールファルダ\plugins\APIs 内にコピーして Notepad++ を再起動すれば完了です。

関数リスト設定

f:id:K-s:20161204113120p:plain:h140

ラベルやユーザー定義命令をリスト表示できるようにします。ダブルクリックでそこにジャンプします。

Notepad++ の設定フォルダ%APPDATA%(C:\Users\ユーザー名\AppData\Roaming\Notepad++)にある "functionList.xml" に以下を書き込み保存。

associationMap 内に

<association userDefinedLangName="HSP" id="hsp_label_function"/>

parsers 内に

<parser id="hsp_label_function" displayName="HSP" commentExpr="(/\*.*?\*)/">
	<function
	    mainExpr="^\s*(#(mod(ule|init|term)|(def|mod)c?func|global)|\*[@\w]).*?$"
		displayMode="$functionName">
		<functionName>
			<nameExpr expr="(#|\*).*?$"/>
		</functionName>
	</function>
</parser>

Notepad++ の "表示" > "関数リスト" で表示できます。リストはリアルタイム反映ではないので編集したらリストの上の再読み込みボタンを押す必要があります。

保存・コンパイル実行を一発操作で

HSP標準エディタだと F5 を押せば編集中のスクリプトは保存せずに一発でコンパイル実行できます。これは実際は編集中の内容を一旦 hsptmp という別のファイルに保存してそれをコンパイルしています。今回使っているツール Cmptage は編集中の内容を取得できないので保存されたファイルをコンパイルする仕様です(TeraPadだとオプションでhsptmp方式も可能)。

そのため一度内容を保存する必要があるのですが、やっぱり一発で実行したいものです。Notepad++ にはマクロ機能があり、それで可能なように思えましたが、実行のショートカットは記録されないみたいなので別の方法にしないといけません。

今のところ2つ方法があります。1つは Notepad++ のプラグイン NppExec と Cmptage のコンソール版 cmptage_cl を使う方法。もう1つは保存と Cmptage を一発で実行してくれるツールを作ってそれを使う方法です。要は NppExec の代わりのツールを作るのです。

他の言語でコンパイルする場合は前者の方法が一般的みたいで、自分も初めはそれで行っていたのですが、NppExec が実行される度にエディタ下にコンソールウィンドウが開くのが少し煩わしかったり、そもそも使い方がよく分かっていない…なのでツールを自作することにしました。

Download ZIP して展開、中の nppcl.hsp の説明通り nppcl.exe と nppcl.ini を作成して配置します。nppcl.ini の内容は以下のように記述して保存。

0
HSP run
"HSPインストールフォルダ/cmptage.exe" %f
HSP run (debug)
"HSPインストールフォルダ/cmptage.exe" /d %f
HSP make exe
"HSPインストールフォルダ/cmptage.exe" /me %f
HSP make ax
"HSPインストールフォルダ/cmptage.exe" /ma %f

あとは nppcl.hsp の説明通り Notepad++ にショートカットを登録して下さい。
(前にHSPコンパイル補助ツールの項で登録したコンパイルのショートカット登録は不要なので削除してもOKです)

f:id:K-s:20161204182810p:plain:h140 f:id:K-s:20161204182820p:plain

NPP cmpluncher と NPP cmpluncher (pre) が今回登録したショートカットです。
初めに1つ目を実行すると右のようなウィンドウが出てきます。実行したいコマンドを選んで Run を押すかEnterキーで実行されます。次回以降は2つ目を実行することでウィンドウは省略されて前回と同じコマンドが実行されます。

nppcl は実行されると現在 Notepad++ で編集している文書を保存し、その後コマンドを実行します。文書の保存方法は Ctrl+S のキーイベントを発行して保存しているので、保存のショートカットが Ctrl+S ではない場合失敗します。少し危ういですがこれで保存・実行が一発でできるようになりました。

(2016.12.10 追記)新規作成した文書は一度ファイル名を決めて保存しておく必要があります。保存ダイアログが出ているタイミングで cmptage が起動してファイルを見つけられないため。あと、保存に時間がかかるような場合だと変更が反映される前にコンパイラが走るかも。この辺なんとかしたい。

キーワード作成

上で使用した NppHspLang.xmlhsp.xml のキーワードリストは下の自作ツールで作成しています。標準機能のキーワードしか出力していないので、普段よく使うプラグインがあればそのキーワードも一緒に出力しておくと便利です。

おつかれさまでした

Have a nice coding!

つかれたー