我的emacs/slime设置有什么问题(编译和加载/eval不工作)?

我的emacs/slime设置有什么问题(编译和加载/eval不工作)?,emacs,lisp,installation,common-lisp,slime,Emacs,Lisp,Installation,Common Lisp,Slime,我可以运行emacs并启动slime(使用M-x slime)。此时,我在低级lisp缓冲区中获得REPL,并可以在那里运行lisp。但是当我在另一个缓冲区中打开lisp代码时,slime Goods没有一个起作用(C-XC-e,C-C-k等等),我在消息缓冲区中不断看到这一点(计数不断增加): 粘液连接:未连接 投票 “/var/folders/B9/B9B5J15dH+aNt5J5gkROEk+++TI/-Tmp-/slime.3202”。。(使用'M-x'中止) 粘液中止连接“”)[69次

我可以运行emacs并启动slime(使用
M-x slime
)。此时,我在低级lisp缓冲区中获得REPL,并可以在那里运行lisp。但是当我在另一个缓冲区中打开lisp代码时,slime Goods没有一个起作用(
C-XC-e
C-C-k
等等),我在消息缓冲区中不断看到这一点(计数不断增加):

粘液连接:未连接

投票 “/var/folders/B9/B9B5J15dH+aNt5J5gkROEk+++TI/-Tmp-/slime.3202”。。(使用'M-x'中止) 粘液中止连接“”)[69次]

让我觉得slime没有连接到正确的lisp解释器,但因为我对emacs和lisp非常陌生,所以我被困在这里。我的设置是:

  • MacOSX雪豹
  • 很少定制:而且

    • 以下是我为使Common Lisp和Clojure在同一Emacs安装中工作所做的工作,以及出色的Emacs初学者工具包。这不允许您同时使用两者(您必须重新启动Emacs才能从CL切换到Clojure,反之亦然)

      我相信ELPA中SLIME的版本很旧,但对Clojure有效。新版本的SLIME对Clojure不起作用。此外,这个版本的SLIME似乎被剥离了(没有swank loader.el?),不能与Common Lisp一起使用

      这些是我为使这项工作发挥作用而采取的步骤,这正是对我起作用的。所有的钻头都在积极开发中,所以我认为这一领域很有可能出现断裂

      使用新的Emacs(完全没有配置,因此暂时将任何东西移动到其他地方)安装ELPA:

      从Emacs内部安装软件包“slime”和“slime repl”。(
      M-x软件包列表软件包
      然后
      C-s slime
      然后
      i
      选择并
      x
      安装)

      ~/.emacs.d/elpa/slime-20100404
      ~/.emacs.d/elpa/slime-repl-20100404
      中的文件移动到新目录,如
      ~/hacking/lisp/elpa slime

      扔掉ELPA安装:
      $rm-rf.emacs.d

      现在克隆emacs初学者工具包并将其移动到
      .emacs.d
      。我只是用technomancy的Github的一个新副本做了这件事,所以如果你有问题,请先尝试一下

      使用CVS获取最新的粘液:

      cvs -d :pserver:anonymous:anonymous@common-lisp.net:/project/slime/cvsroot co cvs-slime
      
      我认为OSX没有安装CVS,所以您需要从Macports、自制软件或其他软件安装它

      我在
      ~/hacking/lisp
      中放入了
      cvs slime

      希望下面的Emacs Lisp的作用显而易见:

      (defun slime-common-lisp ()
        (interactive)
        (setq inferior-lisp-program "/usr/local/bin/sbcl") ; your Common Lisp impl
        (add-to-list 'load-path "~/hacking/lisp/cvs-slime/")  ; your SLIME from CVS directory
        (require 'slime)
        (slime-setup '(slime-repl))
        (slime))
      
      (defun slime-clojure ()
        (interactive)
        (add-to-list 'load-path "~/hacking/lisp/elpa-slime")
        (require 'slime)
        (slime-setup '(slime-repl))
        (slime-connect "localhost" 4005))
      
      对于Clojure,您必须在端口4005上启动Clojure运行时和
      swank Clojure
      ,我认为使用Leiningen是经批准的方法:

      创建新项目:

      $ lein new project
      $ cd project
      
      project.clj
      中:

      (defproject newclj "1.0.0-SNAPSHOT"
          :description "FIXME: write"
          :dependencies [[org.clojure/clojure "1.2.0"]
                         [org.clojure/clojure-contrib "1.2.0"]]
          :dev-dependencies [[swank-clojure "1.2.1"]])
      
      然后:

      编辑以添加:

      如果在使用此设置时发现SLIME REPL中的Paredit已损坏,请检查以下内容:

      至少还有一个潜在的问题是,AFAICT,如果您打开一个公共Lisp源文件,然后启动SLIME,您将无法将表单从第一个缓冲区发送到SLIME缓冲区。所以,在打开任何公共Lisp源文件之前,先打开一个SLIME缓冲区,它应该可以工作。这似乎不适用于Clojure

      参考资料:


      如果您在系统中正确安装了slime,那么最好使用sbcl并在
      ~/.emacs中添加以下行
      
      
      (setq低级lisp程序“/usr/bin/sbcl”)
      


      /usr/bin/sbcl可以根据您的sbcl安装路径而有所不同。

      BTW-我尝试删除我的自定义设置,但仍然无法正常工作。我只剩下:(setq-substander-lisp-program)/usr/local/bin/clisp”)(添加到列表“加载路径”~/code/playway/lisp/slime/)(需要“slime”(slime-setup),所以这个设置适用于Clojure和slime,但不适用于clisp-slime集成。不知何故,当我说M-x slime common lisp时,它仍然在使用来自elpa的slime。如何修复此问题?请在使用
      M-x slime common lisp
      之前尝试重新启动Emacs。Emacs向导可能会在加载CVS one之前说明如何卸载ELPA SLIME,但我不知道如何操作。是的,我在尝试
      M-x SLIME common lisp
      之前确实重新启动了Emacs。然而,ESK在我的slime cvs 1之前加载elpa/slime*,因此出现了问题。我也会尝试询问esk问题。谢谢,回来报到!我挣扎于此,可能没有像我应该做的那样仔细记录。这对我来说似乎很有效,但也许我做了些别的事情。好的,今晚下班后我看了一下我的设置,并更新了我的答案。我所做的不同之处是下载ELPA版本的SLIME,然后将其放在独立的地方,不受emacs初学者工具包附带的ELPA的管理。这是一个非常脆弱的设置,因为如果swank clojure需要更新版本的SLIME和ELPA,您必须修复此问题,因此需要一点婴儿看护。另一方面,我读到ELPA在Emacs的下一个主要版本之前一直被忽视,所以它可能在一段时间内是安全的。祝你好运,如果对你有用,请告诉我!
      $ lein deps
      $ lein swank