При написании кода, учитывающего подключение, вам потребуется собирать и, возможно, применять переменные, локальные для подключения. Существует несколько способов сделать это, как описано ниже.
Эта функция собирает применимые переменные, локальные для подключения, связанные с критериями, в connection-local-variables-alist, не применяя их. Пример:
(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"))
Эта функция ищет переменные, локальные для подключения, в соответствии с критериями и немедленно применяет их в текущем буфере.
Применяет все переменные, локальные для подключения, для приложения, которые заданы default-directory.
После этого выполняется тело, а переменные, локальные для подключения, отменяются. Пример:
(connection-local-set-profile-variables
'my-remote-perl
'((perl-command-name . "/usr/local/bin/perl5")
(perl-command-switch . "-e %s")))
(connection-local-set-profiles '(:application my-app :protocol "ssh" :machine "remotehost") 'my-remote-perl)
(let ((default-directory "/ssh:remotehost:/working/dir/"))
(with-connection-local-application-variables 'my-app
do something useful))
Приложение по умолчанию (символ), применяемое в with-connection-local-variables, connection-local-p и connection-local-value. По умолчанию это tramp, но вы можете локально привязать эту переменную, чтобы временно изменить приложение (см. Локальные переменные).
Эта переменная не должна изменяться глобально.
Это эквивалентно with-connection-local-application-variables, но для приложения используется connection-local-default-application.
Этот макрос устанавливает каждый символ локально для подключения в результат вычисления соответствующей формы, используя профиль, локальный для подключения, указанный в connection-local-profile-name-for-setq; если имя профиля равно nil, этот макрос просто устанавливает переменные обычным образом, как setq (см. Установка значений переменных).
Например, вы можете использовать этот макрос в сочетании с with-connection-local-variables или with-connection-local-application-variables для ленивой инициализации настроек, локальных для подключения:
(defvar my-app-variable nil) (connection-local-set-profile-variables 'my-app-connection-default-profile '((my-app-variable . nil))) (connection-local-set-profiles '(:application my-app) 'my-app-connection-default-profile)
(defun my-app-get-variable ()
(with-connection-local-application-variables 'my-app
(or my-app-variable
(setq-connection-local my-app-variable
do something useful))))
Имя профиля, локального для подключения (символ), используемое при установке переменных через setq-connection-local. Эта переменная локально привязывается в теле with-connection-local-variables, но вы также можете привязать её самостоятельно, если хотите устанавливать переменные для другого профиля.
Эта переменная не должна изменяться глобально.
Этот макрос возвращает не nil, если символ имеет привязку, локальную для подключения, для приложения. Если приложение равно nil, используется значение connection-local-default-application.
Этот макрос возвращает значение, локальное для подключения, для символа в приложении. Если приложение равно nil, используется значение connection-local-default-application.
Если символ не имеет привязки, локальной для подключения, возвращается стандартная привязка переменной.
Если равно nil, переменные, локальные для подключения, игнорируются. Эта переменная должна изменяться временно только в специальных режимах.