在Emacs中,我如何确定哪个包正在加载tramp?

时间:2009-11-10 07:23:32

标签: emacs elisp tramp

我与tramp和cygwin-mount有一个奇怪的互动(我想:Emacs: Tab completion of file name appends an extra i:\cygwin)。因此,我想禁用tramp。我无法在明确加载tramp的.emacs中找到任何内容。当我点击查找文件迷你缓冲区中的选项卡时,我可以看到“正在加载tramp ...”。我想弄清楚什么包导致了tramp的加载并禁用它。我该怎么做呢?我试着寻找(需要'tramp)但找不到任何有趣的东西。我能想到的唯一另一个选择是逐一评论我的.emacs中的一些,看看哪一个有用 - 但这是如此蛮力,我想要一个更聪明(更简单)的方式。

4 个答案:

答案 0 :(得分:19)

这是一个很棒的问题!如果只是因为我不知道函数(eval-after-load文件格式),它将使您能够编写如下代码并将其放入.emacs文件中:

(eval-after-load "tramp"
  '(debug))

以蛮力形式,将在您的窗口中呕吐回溯并揭示有问题的图书馆。

答案 1 :(得分:3)

我想你会发现tramp默认打开了。如果你这样做:

M-x customize-apropos
Customize (regexp): tramp

('Customize(regexp):'是来自emacs的提示)你会看到列出的两个变量(至少我在emacs 23中做过),如:

alt text

如果将tramp-mode设置为'off',请保存以备将来的会话,并重新启动emacs tramp应该不再加载。我相信你可以在当前会话中关闭它应该允许你测试这个,但这并不总是适用于自定义变量,虽然它应该与像tramp这样的标准emacs发布的一部分。

我没有安装emacs 22,但类似的东西也适用于此。

答案 2 :(得分:2)

我有一个与流浪汉有类似问题,有一天我发现了 我系统上的“/C:\...\debuglog.txt”。 由于该文件,auto-complete每次都调用tramp 我进入了 ”/”。流浪汉当然是错误的。 自动完成正在调用

(expand-file-name ...)

由于当前的file-name-handler-alist,它正在调用tramp。 我的解决方案是:

(delete-if
 (lambda (x)
   (or (eq (cdr x) 'tramp-completion-file-name-handler)
       (eq (cdr x) 'tramp-file-name-handler)))
 file-name-handler-alist)

答案 3 :(得分:1)

用于调试的仪器查找文件和/或检测初始化文件以进行调试。然后你可以逐步完成加载,看看tramp的加载位置。