当前位置: 首页 > 知识库问答 >
问题:

在emacs中运行苹果酒插孔

澹台鸿光
2023-03-14

我想学习一些Clojure,我正在尝试从Emacs运行REPL,但我无法让它工作。

我创建了一个基本的项目与lein。我在Emacs中打开生成的文件core.clj,当我试图从它运行REPL时(通过运行苹果酒杰克),我只得到消息:

Symbol's function definition is void: nil

我已经切换了错误调试,回溯(最后几行)是:

 Debugger entered--Lisp error: (void-function nil)
   nil(#<buffer core.clj>)
   #[257 "  !\203\207\300\207" [exclude predicate] 3 "\n\n(fn ELT)"](#<buffer core.clj>)
   seq-map(#[257 "  !\203\207\300\207" [exclude predicate] 3 "\n\n(fn ELT)"] (#<buffer core.clj> #<buffer  *Minibuf-1*> #<buffer *Warnings*> #<buffer *GNU Emacs*> #<buffer *scratch*> #<buffer  *Minibuf-0*> #<buffer *Messages*> #<buffer  *code-conversion-work*> #<buffer  *Echo Area 0*> #<buffer  *Echo Area 1*>))
   seq-filter(#[257 "r\211q\210\300\301!)\207" [derived-mode-p cider-repl-mode] 3 "\n\n(fn BUFFER)"] (#<buffer core.clj> #<buffer  *Minibuf-1*> #<buffer *Warnings*> #<buffer *GNU Emacs*> #<buffer *scratch*> #<buffer  *Minibuf-0*> #<buffer *Messages*> #<buffer  *code-conversion-work*> #<buffer  *Echo Area 0*> #<buffer  *Echo Area 1*>))
   cider-repl-buffers()
   cider-find-reusable-repl-buffer(nil "~/Development/languages/clojure/playground/test1/")
   cider-jack-in(nil)

当我在终端中运行leinrun时,代码运行正常
另外,当我在终端中运行lein repl时,repl会使用以下信息正常运行:

nREPL server started on port 62741 on host 127.0.0.1 - nrepl://127.0.0.1:62741
REPL-y 0.3.7, nREPL 0.2.12
Clojure 1.8.0
Java HotSpot(TM) 64-Bit Server VM 1.8.0_45-b14

莱恩有苹果酒版本0.14。0,而Emacs已下载版本0.15。0

有人能帮我找出我遗漏了安装的哪一部分,或者我做错了什么吗?

谢谢你的帮助!

编辑:下面是Emacs init文件的内容,删除了注释:

(require 'package)
(add-to-list 'package-archives
           '("marmalade" . "http://marmalade-repo.org/packages/") t)
(add-to-list 'package-archives
           '("tromey" . "http://tromey.com/elpa/") t)
(add-to-list 'package-archives
           '("melpa" . "http://melpa.milkbox.net/packages/") t)

(package-initialize)

(when (not package-archive-contents)
  (package-refresh-contents))

(defvar ido-cur-item nil)
(defvar ido-default-item nil)
(defvar ido-cur-list nil)
(defvar predicate nil)
(defvar inherit-input-method nil)

(defvar my-packages
  '(paredit
    clojure-mode
    clojure-mode-extra-font-locking
    cider
    ido-ubiquitous
    smex
    projectile
    rainbow-delimiters
    tagedit
    magit))

(if (eq system-type 'darwin)
    (add-to-list 'my-packages 'exec-path-from-shell))

(dolist (p my-packages)
  (when (not (package-installed-p p))
    (package-install p)))

(add-to-list 'load-path "~/.emacs.d/vendor")
(add-to-list 'load-path "~/.emacs.d/customizations")

(load "shell-integration.el")
(load "navigation.el")
(load "ui.el")
(load "editing.el")
(load "misc.el")
(load "elisp-editing.el")
(load "setup-clojure.el")
(load "setup-js.el")

共有3个答案

松博耘
2023-03-14

所以错误似乎出现在第102行的cider-client.elhttps://github.com/clojure-emacs/cider/blob/master/cider-client.el#L99.我已经把整个deinterest发布在下面了:

(defun cider-repl-buffers ()
  "Return the list of REPL buffers."
  (seq-filter
   (lambda (buffer)
     (with-current-buffer buffer (derived-mode-p 'cider-repl-mode)))
   (buffer-list)))

您能否在苹果酒副本中访问此文件,并确保此定义如下所示。这段代码只是寻找repl缓冲区,并过滤emacs知道的缓冲区。

艾雪风
2023-03-14

删除您的~/。emacs。d目录并改为安装SpaceMac

git克隆https://github.com/syl20bnr/spacemacs ~/.emacs。d

使用新的spacemacs运行Emacs之后。emacs。d目录,您只需打开一个Clojure文件,SpaceMac就会为您加载Clojure层。

更多详细信息可在spacemacs上找到。org和在本教程中介绍了使用spacemacs开发clojurehttps://practicalli.github.io/spacemacs/

颜高格
2023-03-14

以下是我的lein调试清单:

  • ~/中去除任何梅尼顿苹果酒nrepl。莱恩/简档。clj
  • 从终端运行lein repl,然后从emacs运行cider connectlocalhost
  • 运行lein升级
  • 升级至苹果酒emacs软件包的最新版本
  • 在提交错误报告之前,在苹果酒频道询问clojure slack

过去需要将cider的nrepl中间件添加到lein配置文件中,以便在lein启动时将其包含在类路径中。现在,苹果酒自动执行此操作,并自行选择匹配的版本。很多人都在遵循手动过程中的说明,并遇到类似的问题,所以请先检查一下。

 类似资料:
  • 我正在尝试在安装苹果酒软件包的情况下运行Clojure emacs。我使用Emacs24.5。1在Mac OS X 10.10上。4. 我下载了脚本,并在~/Dropbox/bin中复制了脚本。我与莱恩·雷普(lein repl)确认Clojure工作正常。 苹果酒包装与M-x包装安装一起安装。我编辑了指定lein脚本:中,提示Emacs中不能启动'lein`REPL。 但是,当我启动emacs并

  • 我已经使用这个精彩的教程为clojure安装和设置了Emacs。如果我用repl启动,非常好!现在我在这里读到一个min应该是,我更改了我的项目。clj-in。lein deirectory(即“0.8.1”)到“0.9.1”,当我再次开始repl时,我收到以下警告: 你知道我该怎么解决这个问题吗?

  • 我正在完成下面的Clojure教程。我刚刚安装了Emacs和Leiningen。如果单独调用,两者都可以工作。但是,当我试图调用时,如本教程所述: 使用Emacs打开文件clojure noob/src/clojure_noob/core。clj,您在第1章中创建的。接下来,使用M-x苹果酒插孔。这将启动REPL并创建一个新的缓冲区,您可以在其中与之交互。 在最后一条消息后将永远挂起: 我做错了什

  • 今天想弄清楚一些苹果酒的东西。。。 当我用lein new创建一个新的Clojure项目,然后从我的project.clj插入它时,repl在clojure.core命名空间而不是用户。 显然我可以切换,但每次都很烦人。我找到了这个答案,lein repl启动在错误的命名空间,但改变: repl选项没有效果。

  • 当通过reload wrap从Emacs苹果酒REPL内启动环形服务器时,REPL会阻塞。为了在开发过程中重新加载代码,同时能够继续使用Cider REPL,我可以做些什么呢。 另外,在通过点击C-C-C从REPL中取消正在运行的服务器“进程”后,我无法在同一端口上重新启动它,我得到了“地址已在使用”错误。 我知道斯图尔特·塞拉的组件系统可以做到这一点。这是唯一的方法还是有更简单的解决方案?

  • 有没有办法让苹果酒划痕缓冲区针对clojure脚本repl进行编译?默认情况下,评估将发送到Emacs内部的clojure repl。