【发布时间】:2012-07-05 19:59:18
【问题描述】:
我使用term-mode 在 Emacs 中运行 Bash shell。在远程主机上,term-mode 的目录跟踪功能有助于将default-directory 设置为其中包含主机名,以便通过 Tramp 远程完成选项卡完成和文件访问。然而,有时我使用与我的工作站共享相同文件系统的远程主机,因为它们从 NFS 加载相同的目录。在这些情况下,流浪汉让我放慢了太多的速度。在使用这些系统时,我希望 Emacs 在本地设置 default-directory。为此,我已将term-handle-ansi-terminal-messages 从系统term.el 复制到我的.emacs 加载的新文件中。我替换了这部分:
((= command-code ?h)
(setq term-ansi-at-host argument))
用这个:
((= command-code ?h)
(setq term-ansi-at-host-real argument)
(setq term-ansi-at-host
;; if it has an equivalent filesystem group, set to system-name
(if (term-equivalent-filesystem-host-group-p argument)
(system-name)
argument)))
这会调用term-equivalent-filesystem-host-group-p 函数,该函数告诉主机是否应被视为具有等效文件系统。
此方法具有预期的效果,但复制和修改系统 Lisp 代码对于将来代码中的任何更改都不够稳健。如果不复制一半的功能(消息循环或default-directory 和ange-ftp-... 变量的设置),我认为建议该函数是不可能的。
有没有更好的方法来做到这一点?
【问题讨论】:
标签: emacs tramp advising-functions