WSL1でWindowsのコンテキストメニューにemacsclientを追加するレジストリ設定

WSL2は未検証です

WSLでemacsclient にパスを送る方法は沢山あってどれにしようか迷っちゃう感じですが、今回はこちらの記事を参考にしました。

コンテキストメーニューに WSL の emacsclient を追加する。 · GitHub

reg ファイルを作っておけばツールを使わなくても再設定できるのでWindows再インストール等が楽になりますし、設定の備忘録にもなります。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\*\shell\EmacsClient]
"MUIVerb"="Emacs Client"
"Icon"="C:\\アイコンファイルパス\\emacs.ico,0"

[HKEY_CURRENT_USER\Software\Classes\*\shell\EmacsClient\command]
@="\"C:\\Windows\\System32\\wsl.exe\" emacsclient -n \"`wslpath -a '%1'`\""

アイコンファイルパスを環境に合わせて修正し、C-x RET f文字コードutf-8-with-signature にしてから emacsclient.reg または任意の名前で保存します。 あとは Windows で reg ファイルを実行してやればコンテキストメニューEmacs Client が追加されます。

注意点として、この書き方だと%%を使った環境変数のパス文字展開はできません。 C:\\Windows%SystemRoot% の方が当然好ましいですが、自前のregファイルで変数展開するのはちょっと大変みたいなので気にしないようにします。

もう一点の注意点として、この設定はregファイルを実行したユーザーにのみ作用します。 全ユーザーに設定したい場合は [HKEY_CLASSES_ROOT\*\shell\EmacsClient] のようにします。