Применение локальных переменных соединения
При написании кода, учитывающего соединение, вам потребуется собирать и, возможно, применять все локальные переменные соединения. Как описано ниже, это можно сделать несколькими способами.
- Функция: hack-connection-local-variables criteria
-
Эта функция собирает применимые локальные переменные соединения, связанные с criteria, в
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"))
- Функция: hack-connection-local-variables-apply criteria
Эта функция ищет локальные переменные соединения в соответствии с criteria и немедленно применяет их в текущем буфере.
- Макрос: with-connection-local-application-variables application &rest body
-
Применяет все локальные переменные соединения для
application, заданные вdefault-directory.После этого выполняется body, а локальные переменные соединения восстанавливаются. Пример:
(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))
- Переменная: connection-local-default-application
-
Приложение по умолчанию — символ, который применяется в
with-connection-local-variables,connection-local-pиconnection-local-value. По умолчанию используетсяtramp, но вы можете временно изменить приложение, динамически связав эту переменную (см. Локальные переменные).Эту переменную нельзя изменять глобально.
- Макрос: with-connection-local-variables &rest body
Эквивалентен
with-connection-local-application-variables, но используетconnection-local-default-applicationв качестве приложения.
- Макрос: setq-connection-local [symbol form]…
-
Этот макрос устанавливает для каждого symbol локальное для соединения значение, полученное в результате вычисления соответствующего form, используя профиль локальных переменных соединения, указанный в
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))))
- Переменная: connection-local-profile-name-for-setq
-
Имя профиля локальных переменных соединения — символ, используемый при установке переменных через
setq-connection-local. Эта переменная динамически связывается в телеwith-connection-local-variables, но при желании вы также можете динамически связать её самостоятельно, чтобы установить переменные в другом профиле.Эту переменную нельзя изменять глобально.
- Макрос: connection-local-p symbol &optional application
Этот макрос возвращает значение, отличное от
nil, если для symbol существует локальная привязка соединения для application. Если application равноnil, используется значениеconnection-local-default-application.
- Макрос: connection-local-value symbol &optional application
-
Этот макрос возвращает локальное значение соединения для symbol и application. Если application равно
nil, используется значениеconnection-local-default-application.Если для symbol нет локальной привязки соединения, используется привязка переменной по умолчанию.
Отличие от
with-connection-local{-application}-variablesсостоит в том, чтоsymbolне становится локальной для буфера. Типичный способ использования — обращаться к значению переменной для соединения, только если оно существует, и не использовать её значение по умолчанию в противном случае (используяmy-app-variable, инициализированную выше):(if (connection-local-p my-app-variable 'my-app) (connection-local-value my-app-variable 'my-app) ;; Something else. )
- Переменная: enable-connection-local-variables
Если
nil, локальные переменные соединения игнорируются. Эту переменную следует временно изменять только в специальных режимах.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Applying-Connection-Local-Variables.html