我正在转向Emacs来处理Clojure / Lisp。 为了能够执行以下操作,我需要在Emacs上设置的所有信息是什么?
如果我能在Emacs上进行设置后获取命令列表,那将会很棒。
答案 0 :(得分:89)
你需要整理几件:Emacs,SLIME(与Clojure完美配合 - 见swank-clojure),swank-clojure(SLIME服务器对应的Clojure实现),clojure-mode,Paredit当然,首先是Clojure罐子,然后也许是一些额外的东西,其中Leiningen可能是最值得注意的。 一旦完成设置,您将在Emacs中拥有您在问题中提及的所有工作流程/编辑功能。
以下是很棒的教程,介绍如何设置所有这些;网络上有更多,但其他一些已经过时了,而现在这两个似乎还可以:
in which are found tricks of the trade concerning clojure authorship在Phil Hagelberg的博客上发帖; Phil保持了swank-clojure和clojure模式,以及一个名为Emacs Starter Kit的软件包,这对Emacs世界的任何新手都是明智的建议。这些说明似乎已经与最近基础设施的变化有关;如有疑问,请查找有关Clojure Google小组的其他信息。
Setting up Clojure, Incanter, Emacs, Slime, Swank, and Paredit发布在Incanter项目的博客上。 Incanter是一个迷人的软件包,为嵌入Clojure的统计计算提供类似R的DSL。即使您不打算使用 - 甚至安装 - Incanter,这篇文章也会很有用。
一旦你设置了所有这些东西,你可以尝试立即开始使用它,但我强烈建议你做以下事情:
查看SLIME的手册 - 它包含在源代码中,实际上非常易读。此外,你绝对没有理由阅读整个50页的怪物手册;只需浏览一下,看看哪些功能可用。
注意:最新上游源代码中SLIME的autodoc功能与swank-clojure 不兼容 - 如果您按照Phil Hagelberg的建议使用ELPA版本,则不会出现此问题(请参阅他上面提到的博客文章以获得解释)或者只是关闭autodoc(这是事物的默认状态)。后一个选项有一些额外的吸引力,因为你仍然可以使用Common Lisp的最新SLIME,以防你也使用它。
查看paredit的文档。有两种方法可以解决这个问题:(1)查看源代码 - 文件顶部有大量注释,其中包含您可能需要的所有信息; (2)当paredit-mode处于活动状态时,在Emacs中键入 Ch m - 将弹出一个缓冲区,其中包含当前主要模式的信息,然后是有关所有活动次要模式的信息(paredit就是其中之一)
更新:我刚刚在Phil Hagelberg的Paredit上找到this cool set of notes ...这是一个文本文件的链接,我记得在某个地方看到一组很好的幻灯片,但现在似乎无法找到它。无论如何,它是如何工作的一个很好的总结。绝对要看看它,我现在不能没有Paredit而且这个文件应该让它很容易开始使用它,我相信。 : - )
事实上, Ch m 组合将告诉你在clojure模式下活动在SLIME REPL的所有键绑定(你要记住 Cc Ck 用于发送当前缓冲区以进行编译)以及任何Emacs缓冲区。
至于从文件加载代码然后在REPL中进行试验:使用前面提到的 Cc Ck 组合编译当前缓冲区,然后use
或{{1}它在REPL的命名空间。接下来,试验一下。
准备好在所有点击之前调整一段时间。涉及到很多工具,它们之间的相互作用大多相当平稳,但是并不是可以安全地假设您最初不需要进行一些调整。
最后,这里有一些我保留在require
中的代码,你在其他地方找不到它(尽管它基于Phil Hagelberg的一个很酷的功能)。我开始使用.emacs
(Leiningen的一个较酷的功能)启动我的swank实例,并使用下面的lein swank
函数从Emacs中启动整个事件。我尽力使后者产生一个与clojure-project
提供的环境非常匹配的环境。哦,如果您只想在Emacs中使用REPL进行快速而肮脏的实验,那么使用正确的设置,您应该可以直接使用 M-x slime 。
lein swank
答案 1 :(得分:10)
还有一个非常好的教程:
在30到45分钟内,您可以从头开始设置所有内容。
本教程不假设任何先前的Emacs知识(以及Clojure也是如此 - 在之前的帖子中有一个很好的Clojure介绍)。
答案 2 :(得分:8)
Emacs Starter套件对Clojure入门有很好的评价:
只回答你问题的沉闷部分:
Leiningen是一个非常简单的方法,可以使用正确的类路径设置swank并将其连接到Emacs。
这是一个很棒的视频:http://vimeo.com/channels/fulldisclojure#8934942 以下是
的project.clj文件的示例(defproject project "0.1"
:dependencies [[org.clojure/clojure
"1.1.0-master-SNAPSHOT"]
[org.clojure/clojure-contrib
"1.0-SNAPSHOT"]]
:dev-dependencies [[leiningen/lein-swank "1.1.0"]]
:main my.project.main)
然后运行:
lein swank
来自Emacs:
alt-x slime-connect
答案 3 :(得分:2)
答案 4 :(得分:1)
CIDER(Clojure交互式 开发环境)。
它将涵盖您所需要的大部分内容。它包括:
除了CIDER,还有其他一些必不可少的 Clojure开发的附加组件,我将分别尝试将其分组 (主观上):
smartparens –括号 配对,操作,导航(或 parinfer(如果愿意)
clj-refactor – 具有几个惊人的功能,例如自动添加/编译名称空间 (可能很快将其合并到CIDER中)
clojure-mode – 字体锁定,缩进,导航
company –文本完成 框架(或选择其他自动完成器)
rainbow delimeters – 高亮/着色分隔符,例如括号,方括号或 根据其深度进行支撑
flycheck –动态语法 检查扩展名
clojure-snippets – 选项卡可扩展的快捷方式,用于更长的代码块
dumb-jump –跳至 定义
which-key –显示 弹出窗口中可用的键绑定
highlight parentheses – 突出显示圆括号
crux –的集合 对Emacs有用的扩展
comment-dwim-2 –
替代Emacs内置的comment-dwim
magit – Emacs中的git瓷器
projectile –项目mgmt 用于查找文件,搜索等
如果您正在寻找已经完成大部分/所有这些操作的设置 为您工作,有两种选择: