秀丸エディタの AutoHotkey 用辞書ファイルを作った

Version 1.28.0.2 ベース。

成果物

GitHub にアップした。

効果

  • 指定したキーワードを自動補完できる
    • 例: # と打つと #NoTrayIcon などの #XXXX 系が補完される、とか

作り方

いかにしてキーワードを列挙するかが問題。

方法1: ヘルプから(今回採用案)

https://autohotkey.com/docs/AutoHotkey.htm

上記ページの Index から HTML データを取り出した(Firefox の F12ツールで inner HTML をコピーした)後、正規表現とか駆使してキーワードだけ残すようにした。

以下作業メモ。

コピーするとこんなデータ:

<a href="https://autohotkey.com/docs/commands/SetExpression.htm" tabindex="0" data-content=":=" class="selected"></a><a href="https://autohotkey.com/docs/commands/Send.htm#blind" tabindex="-1" data-content="{Blind}"></a><a href="https://autohotkey.com/docs/commands/_AllowSameLineComments.htm" tabindex="-1" data-content="#AllowSameLineComments"></a><a href="https://autohotkey.com/docs/commands/_ClipboardTimeout.htm" tabindex="-1" data-content="#ClipboardTimeout"></a>...

</a></a>\n と置換。

<a href="https://autohotkey.com/docs/commands/SetExpression.htm" tabindex="0" data-content=":=" class="selected"></a>
<a href="https://autohotkey.com/docs/commands/Send.htm#blind" tabindex="-1" data-content="{Blind}"></a><a href="https://autohotkey.com/docs/commands/_AllowSameLineComments.htm" tabindex="-1" data-content="#AllowSameLineComments"></a>
<a href="https://autohotkey.com/docs/commands/_ClipboardTimeout.htm" tabindex="-1" data-content="#ClipboardTimeout"></a>
...

色々工夫して data-content の中身のみ抽出。

:=
{Blind}
#ClipboardTimeout
...

あとはキーワードじゃない分をひたすら削除していく(上記例でいえば上二つは削除)。やり方は、

  • 記号を含む行を削除
  • スペースを含む行を削除
  • 重複行を削除

など。ただこれだと「buffering」みたいな、キーワードじゃないが索引として用意されてる単語がまだ残ってる。ここは省ききれてない。

方法2: ソースから(没案)

ソースコードにキーワードの定義が書いてあるはず、と思って覗いてみたが、結論を言うと定数化がキレイにまとまってないコードだったので抽出は諦めた。

メモ1: ビルドイン変数と関数はこの辺で定義されてる

メモ2: github.com での Search は使い物にならないので Clone して Grep とかした方がベター

感想

『秀丸エディタは長いこと使ってるけど、今回初めて「辞書ファイル」なるものの存在を知った。最近 AutoHotkey を書いているので、試しにと作ってみることにした。

導入してみると、良い感じ。この調子で AutoHotkey コーディングをどんどん捗らせる所存。