暫く使っていないうちに、Notepad++ EUC-JP対応版のバージョンが上がっていたので、久しぶりに使ってみることにした。
ということでv5.4.5-6 euc-jpにv5.0.3-3 euc-jpの時の設定を移植したのだけど、正直めんどい。設定のXMLファイルを一々見比べてマージしているのだけど、何しろ設定を色々と弄くっているので変更点が無茶苦茶多く、diffを見比べるのも一苦労な有様。
何かよい方法はないだろうか?
ところでv5.4.5-6 euc-jpに付属のソースを眺めてみた所、レジストリへの書き込みが発生するタイミングが変わったようだ。
v5.0.3-3 euc-jpの頃は、id:eel3:20080927:1229751665 で書いた通り。
- 「設定→環境設定→ファイルの関連付け」で拡張子を選択し、「登録済み形式」へ登録しようとボタンを押した瞬間に、
- HKEY_CLASSES_ROOT直下に「Notepad++_file」というキーが作成され、その中にキーや値が設定される。
- HKEY_CLASSES_ROOT直下に登録しようとした拡張子名でキーが作成され、デフォルトの値に「Notepad++_file」が設定される。既にその拡張子名のキーが存在し、且つキーのデフォルトの値が設定済みの場合、その値を「Notepad++_backup」という名前でコピーしてからデフォルトの値が上書きされる。
以前は環境設定ダイアログを開いた瞬間にキーが作成されたが、そうではなくなった。ファイルの関連付け設定を弄らない限り、レジストリへの書き込みは発生しないようだ。
ちなみにソースからレジストリにアクセスしている部分を探した方法は、
D:\npp.5.4.5-6.src>grep -nr RegCreate . バイナリー・ファイル./PowerEditor/bin/npp.pdbは一致しました バイナリー・ファイル./PowerEditor/installer/externalTools/md5summer.exeは一致しました ./PowerEditor/src/MISC/RegExt/regExtDlg.cpp:260: nRet = ::RegCreateKeyEx(HKEY_CLASSES_ROOT, ./PowerEditor/src/MISC/RegExt/regExtDlg.cpp:328: nRet = ::RegCreateKeyEx( ./PowerEditor/src/MISC/RegExt/regExtDlg.cpp:363: nRet = ::RegCreateKeyEx( ./PowerEditor/src/tools/nppCM/nppcm.cpp:184: lResult = RegCreateKeyEx(ClsidEntries[i].hRootKey, szSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, &dwDisp); D:\npp.5.4.5-6.src>
前回と全く同じ。
nppcm.cppというソースも引っかかったが、これはnppcm.dllというシェル拡張用コンポーネント*2のソース。nppcm.dll自体は、v5.4.5-6 euc-jpのバイナリには含まれていないようだ。