Emacsサーバーは通常、接続にたいしてローカルのUnixドメインソケットをlistenします。
MS-Windowsのようないくつかのオペレーティングシステムは、ローカルソケットをサポートしません。そのような場合、サーバーはかわりにTCPソケットをlistenします。ローカルソケットがサポートされている場合でも、サーバーにTCPソケットをlistenさせるほうが便利な場合があります(たとえばリモートマシンからEmacsサーバーに接続する必要がある場合)。ローカルソケットのかわりにTCPソケットをEmacsにlistenさせる場合は、server-use-tcp
に非nil
をセットできます。これはOSがローカルソケットをサポートしない場合は、デフォルトです。
EmacsサーバーがTCPを使うように設定されている場合は、デフォルトではlocalhostインターフェイスのランダムなポートをlistenします。server-host
とserver-port
を使用して、これを他のインターフェイス、および/または固定されたポートに変更できます。
TCPソケットは、ファイルシステムのパーミッションの対象ではありません。TCPソケットを通じて、誰がEmacsサーバーと通信できるか何らかの制御を得るには、emacsclient
プログラムがサーバーに認証キーを送信しなければなりません。このキーは通常、Emacsサーバーによりランダムに生成されます。これが推奨されるモードです。
必要なら、server-auth-key
変数をセットすることにより、認証キーに静的な値をセットできます。このキーは、スペースを除くプリント可能な64文字のASCII文字(これは‘!’から‘~’、10進コードの33から126を意味します)から構成されなければなりません。ランダムキーを得るために、M-x
server-generate-keyを使用できます。
TCP
Emacsサーバーを開始したとき、Emacsはemacsclient
がサーバーに接続するために使用する、TCP情報を含むサーバーファイル(server
file)を作成します。変数server-auth-dir
は、サーバーファイルを含むデフォルトディレクトリーを指定します。デフォルトでは、これは~/.emacs.d/server/です。アクセス権限(file
permission)をもつlocalソケットが存在しない場合は、このディレクトリーのパーミッションにより、どのユーザーのemacsclient
プロセスがEmacsサーバーと対話(talk)できるか判断されます。server-name
がー絶対ファイル名なら、サーバーファイルはそのファイル名で作成されます。
特定のserverファイルによりTCPサーバーに接続するようemacsclient
に指示するには、オプション‘-f’または‘--server-file’を使用するか、環境変数EMACS_SERVER_FILE
をセットします(emacsclient
のオプションを参照)。server-auth-dir
が非標準的な値にセットされていたり、server-name
に絶対ファイル名がセットされていると、デフォルトのserver-auth-dir
は、相対ファイル名を解決するために使用するディレクトリーとして、emacsclient
内にハードコーディングされているため、serverファイルにたいする絶対ファイル名が必要になります。