keyhook 0x1B; ⇒ endmacro_postcommand 5No.11430
western さん 23/06/03 15:36
 
再現手順 (最小の条件を絞り込む余裕がなかったので再現した状況で)

秀丸エディタマクロライブラリから
「LSP(Language Server Protocol)用マクロサンプルとJSONサーバー/TypeScriptサー
バーの例 V0.02」
をダウンロードし、TypeScript のLSPが起動するように setting.ini を最低限設定する

--------------------------------
node-v18.16.0-win-x86.zip をダウンロードして C:\に展開
C:\node-v18.16.0-win-x86\npm.cmd install typescript typescript-language-serv
er -g
--------------------------------
setting.ini

command="C:\node-v18.16.0-win-x86\node.exe C:\node-v18.16.0-win-x86\node_mod
ules\typescript-language-server\lib\cli.js --stdio"
dir="C:\node-v18.16.0-win-x86"
--------------------------------

client.mac の最後の行に以下の keyhook を追加
#id = keyhook(0x1B, registercallback(currentmacrodirectory+@"\keyhook.mac
")); // 0x1B:VK_ESCAPE

マクロのあるフォルダに keyhook.mac というファイルを作成し、以下の内容を記述
debuginfo 2; endmacro_postcommand 547; // コマンド値 "Escキー"

拡張子が .ts のファイルを開く (空っぽのファイルでもよい。LSPマクロの.tsでも
よい)

client.mac を実行する

ESC を連打(or 押しっぱなしにする)
運が悪いと1回で、そうでなくても20回くらい、押しっぱなしなら割とすぐに

-------------------------------------
C:\DATA\HidemaruExtention\lspclientsample002\client.js(0) +...
 
Line : 37
Col : 28
Error code : 0/ 0x80004005
-------------------------------------

というエラーが表示されて jsmode が落ちます

[ ]
RE:11430 keyhook 0x1B; ⇒ endmacro_postNo.11432
秀丸担当 さん 23/06/05 09:26
 
バグ情報ありがとうございます。
同じようにして再現できました。
調べてみたところ、endmacro_postcommandによる終了が、マクロ中断するときのよう
に全ての中断にしてしまっていました。
そういう動作にはならないように、1つのマクロ実行の中断だけとなるように修正さ
せていただきます。

[ ]