Spec-Zone.ru › Elisp

Применение локальных переменных соединения

При написании кода, учитывающего соединение, вам потребуется собирать и, возможно, применять все локальные переменные соединения. Как описано ниже, это можно сделать несколькими способами.

Функция: 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API