Предлагает ли бродяга какой-либо API для запроса информации из имени буфера-файла?

В настоящее время я много работаю на удаленных машинах с помощью трамп. Однако логика проекта запутывается при построении командных строк make, поскольку он попытается перейти к некоторому пути /ssh:blah.....

Предоставляет ли трамп какие-либо функции API для проверки того, действительно ли буфер или имя файла буфера управляются трампом и, следовательно, на удаленной машине? Может ли он предоставить дополнительную информацию о типе соединения (например, сведения о пользователе/узле ssh)?


person stsquad    schedule 05.08.2010    source источник


Ответы (2)


Что касается вашего первого вопроса о проверке, управляется ли имя файла бродягой, см. функцию бродяга-бродяга-файл-p, которая вернет t, если имя файла является файлом бродяги.

person Erik Iverson    schedule 14.08.2010
comment
tramp-tramp-file-p не возвращает t для файла Tramp, он фактически возвращает 0, который оказывается индексом, возвращаемым string-match, который используется для проверки синтаксиса имени файла Tramp. Я склонен сказать, что это ошибка либо в строке документации tramp-tramp-file-p, либо в ее реализации. Я бы рекомендовал использовать file-remote-p для тестирования удаленного файла, потому что он более общий (он должен иметь возможность обрабатывать другие обработчики удаленного доступа, кроме Tramp). - person ack; 11.07.2017

Переменная tramp-file-name-regexp используется для сопоставления имен файлов в стиле Tramp. (изменить: см. ответ erikriverson ниже для более удобного способа сопоставления с этим.)

Это добавляется к file-name-handler-alist (который определяет обработчик для всех имен файлов) и связывается с tramp-file-name-handler, так что вы можете в качестве альтернативы проверить возвращаемое значение функции find-file-name-handler, чтобы увидеть, совпадает ли оно. Это кажется немного более надежным методом (хотя на практике это, вероятно, не имеет значения).

(eq (find-file-name-handler filename nil) 'tramp-file-name-handler)

Затем (tramp-dissect-file-name filename) вернет отдельные компоненты соединения (см. также переменную tramp-file-name-structure).

person phils    schedule 05.08.2010