Emacs tramp是否提供用于查询缓冲区文件名信息的API

Emacs tramp是否提供用于查询缓冲区文件名信息的API,emacs,tramp,Emacs,Tramp,我目前正在用tramp在远程机器上做很多工作。但是,在构建make命令行时,项目逻辑会变得混乱,因为它将尝试cd到一些/ssh:blah。。。。路径 tramp是否提供任何API函数来测试缓冲区或缓冲区文件名是否由tramp实际管理,并因此在远程机器上进行管理?它能否提供有关连接类型的附加信息(例如ssh用户/主机详细信息)?变量tramp file name regexp用于匹配类似于tramp的文件名。(编辑:请参阅下面的erikriverson的答案,以获得与此匹配的更方便的方法。) 这被

我目前正在用tramp在远程机器上做很多工作。但是,在构建make命令行时,项目逻辑会变得混乱,因为它将尝试cd到一些/ssh:blah。。。。路径


tramp是否提供任何API函数来测试缓冲区或缓冲区文件名是否由tramp实际管理,并因此在远程机器上进行管理?它能否提供有关连接类型的附加信息(例如ssh用户/主机详细信息)?

变量
tramp file name regexp
用于匹配类似于tramp的文件名。(编辑:请参阅下面的erikriverson的答案,以获得与此匹配的更方便的方法。)

这被添加到
文件名处理程序alist
(它确定所有文件名的处理程序),并与
tramp文件名处理程序
相关联,因此您也可以测试
查找文件名处理程序
函数的返回值,以查看它是否匹配。这似乎是一种更稳健的方法(尽管在实践中可能没有什么区别)

(eq(查找文件名处理程序filename nil)'tramp文件名处理程序)


(tramp剖析文件名文件名)
然后将返回各个连接组件(另请参见
tramp文件名结构
变量)。

关于检查文件名是否由tramp管理的第一个问题,请参阅函数tramp-tramp-file-p,如果文件名是tramp文件,则该函数将返回t

tramp-tramp-file-p
不返回
t
对于一个tramp文件,它实际上返回
0
,这恰好是
字符串匹配
返回的索引,用于检查tramp文件名语法。我倾向于说这是一个bug,无论是在
tramp-tramp-file-p
的docstring中还是在其实现中。我建议使用
file-remote-p
来测试文件是否远程,因为它更通用(它应该能够处理除Tramp之外的其他远程访问处理程序)。