【问题标题】:Error when loading emacs with emacs-live使用 emacs-live 加载 emacs 时出错
【发布时间】:2015-06-11 04:34:46
【问题描述】:

当我启动 emacs 时出现错误

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  string-match("cmd\\.exe" nil)
  (if (string-match "cmd\\.exe" tramp-encoding-shell) "/c" "-c")
  eval((if (string-match "cmd\\.exe" tramp-encoding-shell) "/c" "-c"))

这似乎在加载 magit 包时发生

  eval-buffer(#<buffer  *load*-330059> nil "c:/cygwin64/home/johnstonk/.emacs.d/emacs-live/packs/stable/git-pack/lib/magit/magit.el" nil t)  ; Reading at buffer position 3100

我通过 emacs-live 的新 git 克隆确认会发生这种情况。 我尝试从加载实时初始化文件中删除 magit 包,但在加载 clojure 包时再次遇到相同的错误。 tramp 中看起来像一个 nil 字符串错误。

有人知道为什么吗?

【问题讨论】:

    标签: emacs tramp


    【解决方案1】:

    浏览并加载 tramp-sh.el 的源代码,我在第一行得到了相同的 (wrong-type-argument stringp nil) (require 'tramp)

    所以我加载了 tramp.el(22.1 版)并进入了该部分

    (defcustom tramp-encoding-shell
      (if (memq system-type '(windows-nt))
          (getenv "COMSPEC")...
    

    我注意到这个系统类型被设置为 windows-nt(我应该在 windows7 上)但是(getenv "COMSPEC") 返回 nil。根据我在其他地方搜索的内容,这个 COMSPEC 环境变量预计存在于 Windows 机器上并指向 shell。 Tramp 使用tramp-encoding-shell var 对本地机器上的命令进行编码和解码,例如“~”——至少根据tramps cmets。

    COMSPEC 对我来说不作为系统环境变量存在,所以我创建了它并将其指向 cmd.exe C:\Windows\System32\cmd.exe 这为我修复了它。

    注意不要将 COMSPEC 设置为 powershell,我首先尝试过,但是当我尝试使用 lein 时出现严重的内存泄漏(不断尝试创建服务器,失败,然后再次尝试但没有'不清理以前的线程)。

    【讨论】:

    • 你是如何让 powershell 工作到任何程度的......?我工作的计算机已禁用 cmd。如果你想看看,我有一个相关的问题 (stackoverflow.com/questions/29970442)。
    猜你喜欢
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 2022-10-24
    • 2014-04-27
    • 2011-05-05
    相关资源
    最近更新 更多