Emacsでは、接続ごとに適用する変数設定を保存するためにconnection-localプロファイルを使用します。そして、connection-local-set-profilesを用いて適用条件を定義することで、これらをリモート接続に関連付けることができます。
この関数は、シンボルである接続 profile
に対する一連の変数設定を定義します。後でこの接続プロファイルを1つ以上のリモート接続に割り当てると、Emacs
はそれらの接続のすべてのプロセスバッファにこれらの変数設定を適用します。variables のリストは
(name . value) 形式のアリストです。例:
(connection-local-set-profile-variables
'remote-bash
'((shell-file-name . "/bin/bash")
(shell-command-switch . "-c")
(shell-interactive-switch . "-i")
(shell-login-switch . "-l")))
(connection-local-set-profile-variables
'remote-ksh
'((shell-file-name . "/bin/ksh")
(shell-command-switch . "-c")
(shell-interactive-switch . "-i")
(shell-login-switch . "-l")))
(connection-local-set-profile-variables 'remote-null-device '((null-device . "/dev/null")))
既存のプロファイルに変数設定を追加したい場合は、connection-local-get-profile-variables関数を使用して既存の設定を取得できます。例えば以下の通りです。
(connection-local-set-profile-variables 'remote-bash (append (connection-local-get-profile-variables 'remote-bash) '((shell-command-dont-erase-buffer . t))))
このalistには、接続プロファイルのシンボルと関連する変数設定が格納されています。connection-local-set-profile-variablesによって更新されます。
この関数は、criteria で識別されるすべてのリモート接続に、シンボルである profiles を割り当てます。criteria
は、接続およびその接続を使用しているアプリケーションを識別するプリストです。プロパティ名には :application、:protocol、:user、:machine などが指定可能です。:application
のプロパティ値はシンボルであり、それ以外のプロパティ値はすべて文字列です。すべてのプロパティは任意であり、criteria が nil の場合は常に適用されます。例:
(connection-local-set-profiles '(:application tramp :protocol "ssh" :machine "localhost") 'remote-bash 'remote-null-device)
(connection-local-set-profiles
'(:application tramp :protocol "sudo"
:user "root" :machine "localhost")
'remote-ksh 'remote-null-device)
criteria が nil
の場合、すべてのリモート接続に適用されます。したがって、上記の例は以下と同等になります。
(connection-local-set-profiles '(:application tramp :protocol "ssh" :machine "localhost") 'remote-bash)
(connection-local-set-profiles
'(:application tramp :protocol "sudo"
:user "root" :machine "localhost")
'remote-ksh)
(connection-local-set-profiles nil 'remote-null-device)
profiles の接続プロファイルは、既に connection-local-set-profile-variables
によって定義されていなければなりません。
このalistには、接続条件とそれに割り当てられたプロファイル名が格納されています。関数 connection-local-set-profiles はこのリストを更新します。