m13o

2019-10-16 Wed 12:44
macOS環境下でrdmをDaemon化するEmacs macOS

macOS環境下のEmacsでrtagsを有効にしておくと, どうもrdmが起動していない場合に初回のみあらゆる(全てではない)コマンドがrdmのプロセスを立ち上げるか何かで戻ってこなくなる. のでrdmをDaemon化する事でこの事象を回避しようと思う.

homebrewでrtags一式入れたとして, 以下のようなplistを適当な名前で~/Library/LaunchAgents下に作り(${USER}の箇所は実在するUser名……というかフォルダ名にしておく),

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>net.rtags.rdm</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/bin/rdm</string>
    <string>--verbose</string>
    <string>--launchd</string>
    <string>--inactivity-timeout=300</string>
    <string>--log-file=/usr/local/var/log/rtags.log</string>
  </array>
  <key>Sockets</key>
  <dict>
    <key>Listener</key>
    <dict>
      <key>SockPathName</key>
      <string>/Users/${USER}/.rdm</string>
    </dict>
  </dict>
</dict>
</plist>

macOSを再起動するか, launchctlでjobを起動する.

launchctl load ~/Library/LaunchAgents/net.rtags.rdm.plist
launchctl start net.rtags.rdm

homebrewで入れるとDaemon化もhomebrew経由でできるのだけど, バージョンが固定されたplistが作られてupgradeする度にやり直さないといけないので, もし, homebrewを利用してDaemon化した場合は, 実行ファイルパスの箇所をシンボリックリンクに変えてあげるでも良いはず.