rcmdnk's blog

20130723_AutoHotKey_200_200

WindowsでキーカスタマイズができるAutoHotkeyですが、 設定ファイルの中から他の設定ファイルをIncludeするようなことが出来ます。

その際、ちょっと問題が発生したのでそれについて。

If文の条件は続く

myscript.ahk
1
2
3
4
5
6
7
8
...
#Include  %A_LineFile%\..\outer_script.ahk

Return

; My settings
a::b
...

の様な感じで外部ファイルを Includeするとき Includeしたファイルの中で、

outer_script.ahk
1
2
3
4
...
#If Condition == 1
...
Return

みたいな感じでIf文を使っている場合、このIf文はIncludeを行ったファイルのその後の部分にまでかかってきてしまいます。

つまり、上の場合、a::bCondition==1の場合のみに動作することになります。

なのでIncludeする際にはちょっと注意が必要です。

回避するためには、Includeされる可能性のあるファイルでは常に一番最後にIf文のリセットを入れること。

outer_script.ahk
1
2
3
4
5
6
...
#If Condition == 1
...
Return

#If

他に影響は与えないのでAutoHotkeyを書くときには常に最後に #Ifを入れておいた方が良いと思います。

一方、Includeする側でも基本的に常にどの様な条件で使うべきか一番最初の設定から考え、 無条件にしたい場合でも

myscript.ahk
1
2
#If
..

の様に#Ifでリセットしてから始める様にするのが良いと思います。

もしかしたら条件を入れるためにIncludeを使う様な特殊な使い方をすることもあるかもしれませんが、 そうでない場合は#Ifのリセットの習慣をつけよう、と。

ちなみにこれはvim_ahkで最近気づいたことです。

自分の設定ファイルではこれをIncludeした後最初からIf文を使って条件付でいろいろ書いてるので 問題なかったのですが、 If文を使ってないファイルの中へIncludeした場合には問題が起きていたと思います。

というわけで先週くらいに治しましたので もしvim_ahkを入れると動作がおかしくなったな、と感じてた人が居たら 新しいのを使ってみてください。

Sponsored Links
Sponsored Links

« 多段sshでGitを使う Mac Evernoteでダークモードの見えづらい状態を治す »

}