tramp是否提供任何用于查询buffer-file-name信息的API

时间:2010-08-05 14:40:39

标签: emacs tramp

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

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

变量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变量)。