如何让 Emacs 比 Tramp 更“人”地工作?

Woj*_*Gac 5 unix emacs manpage tramp emacs24

我有一个关于在 Emacs 中使用 的问题M-x man。我一直在使用 Tramp,并且远程服务器上安装的程序通常与我的本地设置有很大不同。我发现调用M-x man涉及在本地计算机上查找相关的联机帮助页。有没有办法指示它使用Tramp另一边的环境?

我知道有一个 Elisp 变量tramp-remote-process-environment,我尝试为其添加一个条目MANPATH,但它似乎不起作用(恐怕这是因为我将它放在表单中/usr/share/man而不是/scpc:user@host:/usr/share/man,但我想要的是一个通用的解决方案在所有远程主机上工作)。有任何想法吗?

leg*_*cia 3

Man-start-calling宏中man.el

(let (...
    (default-directory
      (if (and (file-directory-p default-directory)
               (not (find-file-name-handler default-directory
                                            'file-directory-p)))
          default-directory
        "/"))
Run Code Online (Sandbox Code Playgroud)

也就是说,如果当前默认目录有一个特殊的文件名处理程序,例如 Tramp,它将使用根目录作为启动目录man,因此它将从运行 Emacs 的系统中看到手册页。

除了更改之外,似乎没有其他方法可以禁用此功能man.el。请注意,这是一个宏,因此您需要重新加载该宏以及所有使用该宏的函数。

  • 谢谢@legoscia,不过这很有趣。我认为期望 Emacs 与远程联机帮助页交互是很自然的。 (2认同)
  • 仅供参考,上面的代码现在位于“Man-getpage-in-background”中,并且不在宏中,但注释掉“default-directory”绑定“不”启用远程手册页。 (2认同)