【问题标题】:Slime mode error史莱姆模式错误
【发布时间】:2011-09-24 07:19:37
【问题描述】:

我正在关注来自A gentle tutorial to Emacs/Swank/Paredit for Clojure的指南和信息

但是在打开 elpa 并安装 clojure-mode、slime 和 paredit 之后。我重新启动了 emacs,然后尝试使用 M-x slime,但它一直说 no match 。我做错了什么?

然后我尝试从 marmalade http://marmalade-repo.org/packages 安装 clojure-mode 我字节编译包 el 然后添加 (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) 到 my.emacs。然而果酱错误 Symbol 作为变量的值是 void: package-archives 。

不确定我做错了什么我在 windows7 上使用 emacs 23.3。我已将 clojure 安装到 c:/clojure。

任何帮助表示赞赏。

【问题讨论】:

    标签: emacs clojure read-eval-print-loop slime elpa


    【解决方案1】:

    我的 init.el 有 (require 'package)(package-initialize)。它不是很大,看起来像这样:

    (require 'package)
    ;; Add the original Emacs Lisp Package Archive
    (add-to-list 'package-archives
                 '("elpa" . "http://tromey.com/elpa/"))
    ;; Add the user-contributed repository
    (add-to-list 'package-archives
                 '("marmalade" . "http://marmalade-repo.org/packages/"))
    (package-initialize)
    

    我在 Windows 7 上使用 emacs 24 (a development build)。我也无法让 emacs 23 与软件包一起使用,对我来说升级更容易。

    顺便说一句,我注意到如果我设置了一个 HOME 环境变量,emacs 会在那里查找 .emacs.d 目录(而不是在 %USER_PROFILE%\AppData\Roaming 中)。

    【讨论】:

      【解决方案2】:
      1. 下载 package.el(不要按照 ELPA 网站上的说明,只需下载 marmalade 网站上提供的 package.el)。
      2. 将 package.el 放入您的 .emacs.d 目录 (~/.emacs.d/)。
      3. 将以下内容添加到您的 .emacs 文件 (~/.emacs):

      ;;Load path to my packages
      
      (add-to-list 'load-path "~/.emacs.d/")
      
      ;;Load ELPA (the package.el you downloaded from marmalade)
      
      (require 'package)
      
      ;;Load Marmalade (the code found on marmalade's welcome page)
      
      (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
      

      就是这样!我真的希望这会有所帮助。

      编辑:对不起,我忘了提到您需要在我提供的代码末尾添加 (package-initialize)。如果不添加此行,包将安装,但不会加载。

      【讨论】:

        【解决方案3】:

        我认为,你需要把

        (require 'package)
        

        在“添加到列表”之前

        附:并在“添加到列表”之后添加以下调用

        (package-initialize)
        

        此命令将加载已安装的包并激活它们

        P.P.S. '(require 'package)' 可能不需要,但我个人没有使用 'package.el'

        【讨论】:

        • 感谢它目前仍然无法正常工作。 ELPA 有效,但果酱不行。这是一个耻辱,因为果酱上的 clojure 模式是 1.9.4 和 ELPA 1.7.1。有一点可以确定marmalade-repo.org 上的指示肯定是模糊的,而且可能不准确。
        • 如果你总是想有新鲜的版本,你可以看看 el-get 包 (github.com/dimitri/el-get)
        • 我刚刚尝试了我的新 Emacs(来自 BZR)并且 package.el 显示了来自 marmalade-repo 的版本 -- 1.9.2
        【解决方案4】:

        在我看来,您缺少 (require 'package)(package-initialize)。您可以查看我的设置 here - 我在 Windows 7 上同时使用了 marmalade 和 clojure-mode,它的工作原理就像一个魅力。

        【讨论】:

        • 我已将 package.el 放在我的 .emacs.d 目录中,但它仍然无法在 .emacs 中加载 (require 'package) 和/或 (package-initialize)。我试过你的 git 包创建了一个目录并克隆到 C:\emacs_kit\emacs-dev-kit created ln -s C:/emacs_kit/emacs-dev-kit ~/.emacs.d 。启动 emacs 后,虽然 M-X slime 仍然没有匹配错误。
        • 在 windows 7 上 .emacs.d 应该在 "c:/Users/Username/AppData/Roaming/.emacs.d" - 否则 Emacs 不会捡起它。
        • 哦,是的,我同意,我正在尝试设置 emacs 以在 XP PC、Win7 笔记本电脑和 Vectorlinux 机器上使用 clojure。
        • ~/.emacs.d 默认情况下不在加载路径上,因此即使您将package.el 放在那里,您也无法使用它。试试(add-to-list 'load-path (expand-file-name "~/.emacs.d"))
        【解决方案5】:

        不知道是不是同样的问题,我在尝试使用 quicklisp 的 swank/slime 时遇到过

        最后我发现很少有 /contrib/*.el 包是相互依赖的 如果A的依赖包是B,如果B没有字节编译则A不会编译

        当你这样做时 (需要'A)

        它会抛出 Symbol的变量值是void:A

        因此,请确保编译每个包而不是尝试 require。

        【讨论】:

          猜你喜欢
          • 2016-02-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-17
          • 2018-12-09
          • 1970-01-01
          • 2020-03-27
          • 2021-09-27
          相关资源
          最近更新 更多