我曾经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-
...变量的设置),就不可能为该函数提供建议。
有一个更好的方法吗?