Next: Variable Aliases, Previous: Directory Local Variables, Up: Variables [Contents][Index]
接続ローカル変数(connection-local variable)はリモート接続をもつバッファにおいて、異なる変数セッティングにたいする汎用のメカニズムを提供します。これはそのリモート接続に専用のバッファーに応じてバインドおよびセットされる変数です。
この関数は接続profile
(シンボル)にたいする一連の変数セッティングを定義する。この接続プロファイルに後から1つ以上のリモート接続を割り当てることができ、Emacsはそれらの接続にたいするすべてのプロセスバッファーにそれらの変数セッティングを適用するだろう。variables内のリストは(name . value)
という形式のalist。たとえば:
(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")))
このalistは接続プロファイルシンボルと連想変数セッティングを保持する。これはconnection-local-set-profile-variables
により更新される。
この関数はcriteriaで識別されるすべてのリモート接続にprofiles
(シンボル)を割り当てる。criteriaは接続を識別するplistであり、アプリケーションはその接続を使用する。プロパティ名は: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は接続のcriteria(判断基準)それに割り当てられたとprofileの名前を含む。関数connection-local-set-profiles
はこのリストを更新する。
この関数はconnection-local-variables-alist
内のcriteriaに関連する適用可能な接続ローカル変数を適用することなく収集する。たとえば:
(hack-connection-local-variables '(:application 'tramp :protocol "ssh" :machine "localhost"))
connection-local-variables-alist ⇒ ((null-device . "/dev/null") (shell-login-switch . "-l") (shell-interactive-switch . "-i") (shell-command-switch . "-c") (shell-file-name . "/bin/bash"))
この関数はcriteriaに対応する接続ローカル変数を探してカレントバッファーに即座に適用する。
default-directory
で指定されるすべての接続ローカル変数を適用する。
その後にbodyを実行して接続ローカル変数を非バインド化する。たとえば:
(connection-local-set-profile-variables 'remote-perl '((perl-command-name . "/usr/local/bin/perl") (perl-command-switch . "-e %s")))
(connection-local-set-profiles '(:application 'tramp :protocol "ssh" :machine "remotehost") 'remote-perl)
(let ((default-directory "/ssh:remotehost:/working/dir/")) (with-connection-local-variables do something useful))
nil
なら接続ローカル変数を無視する。この変数は特殊なモード内でのみ一時的に変更されるべきである。