【发布时间】:2015-04-23 13:47:40
【问题描述】:
我使用 tramp 连接到我公司的服务器。 如果我访问本地文件和远程文件,我想自定义我的功能以不同的方式工作。
是否有一个变量可以检查我正在访问的缓冲区是在远程服务器上还是在我的本地机器上?
类似:
if(TRAMP_CONNECTED)
Do this
else
Do that
【问题讨论】:
-
我问了一个 phils 之前回答过的类似问题——他的回答以及我在下面的评论可能会解决您的问题:stackoverflow.com/a/24481891/2112489 在我的情况下,我还想区分我连接到哪个遥控器-- 因为我有几个。
-
你是个了不起的人。
-
法律列表,出于某种原因,这段代码:(and (file-remote-p dired-directory 'localhost) (equal (tramp-file-name-real-host (tramp-dissect-file-name dired-directory)) "remote-name")) 如果在文件内执行则返回错误。有没有办法改变它以检查缓冲区是文件还是目录?
-
可能使用
file-directory-p-- 文档字符串如下:(file-directory-p FILENAME)-- 如果 FILENAME 命名现有目录,则返回t。指向目录的符号链接算作目录。请参阅file-symlink-p以区分符号链接。 根据用法,您可能还对将buffer-file-name作为变量或将(buffer-file-name)作为函数感兴趣——两者通常在有文件时设置;但是,某些模式将非文件访问缓冲区设置为等于特定的buffer-file-name。 -
我需要纠正我之前评论中的一个小错误——
buffer-file-name的 值 有时是由非文件访问缓冲区的某些模式设置的。函数buffer-file-name的文档字符串指出:返回正在访问的文件BUFFER 的名称,如果没有则返回nil -- 没有参数或nil 作为参数意味着使用当前缓冲区。 我还没有看到一个示例,其中 value 在变量或返回 value 的函数之间会有所不同。