文档章节

Emacs 下用 slime 连接 clojure 最简单实现

FreeBlues
 FreeBlues
发布于 2014/01/27 18:46
字数 741
阅读 551
收藏 0

有不少同学想在 Emacs 下用 slime 调试 clojure 程序,我也是其中之一,之所以这么选择是因为熟悉了 Emacs 异常方便的快捷键操作,非常清楚把这些快捷键跟 clojure 的 REPL 机制结合起来会让调试程序来非常顺手。

这个图很清楚地显示了这种调试方式的内部通信机制:


不过不幸的是,slime 和 clojure 是两个版本发布比较活跃的软件,常常出现的情况是:swank-clojure 刚刚修改好对最新版本的 clojure 的适配,clojure 又出新版本了,又有某些修改使得两者无法协调工作。

于是就悲剧了,搞半天都加载不成功。

我也被这个问题困扰许久,直到发现这篇文章(http://7thgen.info/blog/2010/12/clojure-for-mac-os-x/)

SLIME 一般的安装方式是到其主页下载最新的 CVS 版本使用,不过因为 Clojure 和 LISP 有些微妙的差异,而且本身还是个比较新的语言,关键机制的改变也比较多见,所以 swank-clojure 的实现经常赶不上 SLIME 最新的变化,于是 technomancy 维护了一个 SLIME 的分支,用来保持稳定在和最新版本 swank-clojure 能够协同工作的状态。technomancy 比较建议采用 Emacs 23 以后内置的包管理工具 ELPA 来安装这个版本的 SLIME,但是经我多次试验,总是有些问题,所以还是采用手工方式:

好了,下面是具体的操作步骤:

首先要保证安装了 git ,因为我们需要从 github 获取能协调工作的最新版本的 slime 和 swank-clojure,具体安装方式也很简单,在 mac上用 macport 就行了:

sudo port install git

然后建立一个目录,用来保存 slime 和 swank-clojure

mkdir github

接着进入这个目录,用 git 获取 slime 和 swank-clojure,分别保存在 clojure-mode 和 slime-new 目录下,命令如下:

cd github
git clone https://github.com/technomancy/clojure-mode.git clojure-mode
git clone https://github.com/technomancy/slime.git slime-new

具体执行显示如下:

Air:~ admin$ cd Github
Air:Github admin$ 

Air:GitHub admin$ git clone https://github.com/technomancy/clojure-mode.git clojure-mode
Cloning into clojure-mode...
remote: Counting objects: 1879, done.
remote: Compressing objects: 100% (1011/1011), done.
remote: Total 1879 (delta 815), reused 1879 (delta 815)
Receiving objects: 100% (1879/1879), 479.79 KiB | 199 KiB/s, done.
Resolving deltas: 100% (815/815), done.

Air:GitHub admin$ git clone https://github.com/technomancy/slime.git slime-new
Cloning into slime-new...
remote: Counting objects: 16450, done.
remote: Compressing objects: 100% (5583/5583), done.
remote: Total 16450 (delta 10862), reused 16450 (delta 10862)
Receiving objects: 100% (16450/16450), 13.70 MiB | 94 KiB/s, done.
Resolving deltas: 100% (10862/10862), done.

好了,现在已经把配套的 slime 和 swank-clojure 取回来了,接着就要配置你的 Emacs 配置文件 .emacs 了,打开该文件,加入如下内容:

(add-to-list 'load-path "~/Github/slime-new/")
(setq load-path (cons "~/Github/slime-new/" load-path))

(add-to-list 'load-path "~/Github/clojure-mode/")
(require 'clojure-mode)

现在就全部搞定了,先启动 Emacs ,按 M-x slime-connect 

显示连接到本机 127.0.0.1 按回车

显示端口为 4005 按回车

就可以进入 clojure 的 REPL 界面了。


© 著作权归作者所有

FreeBlues
粉丝 98
博文 280
码字总数 493678
作品 0
其它
程序员
私信 提问
新年第一篇: 给LISP新手介绍下SLIME这个神器

新年第一篇: 给LISP新手介绍下SLIME这个神器 Posted on 2013/01/04 by Albert Lee 好久没给自己的blog浇水了. 昨晚写的一些东西也是首先发布在douban的LISP小组里,冷落了自家的blog,罪过啊,...

FreeBlues
2013/01/18
0
0
Emacs 下最新版本 slime 启动 clojure-swank 错误提示

Emacs 下最新版本 slime 启动 clojure-swank 错误提示 (require 'swank.swank) (swank.swank/ignore-protocol-version "2013-11-17") (do (.. java.net.InetAddress getLocalHost getHostAdd......

FreeBlues
2013/12/20
0
0
Slime 手册学习总结 (一)Emacs 快速切换不同缓冲区的设置技巧

Slime 手册学习总结 (一)Emacs 快速切换不同缓冲区的设置技巧 用 Emacs 环境进行 Common Lisp 编程,好的键盘操作技巧可以让你尽量少用鼠标,避免切换操作,有组于保持连续的思路。 今天介...

FreeBlues
2013/01/30
0
0
想法验证:超轻量级全功能纯文本界面 REPL 类语言 IDE: Vim+Tmux+Slimv

想法验证:超轻量级全功能纯文本界面 REPL 类语言 IDE: Vim+Tmux+Slimv 前言 之前写过一篇文章超轻量级纯文本界面 REPL 类语言 IDE, 介绍了在纯粹文本界面下如何用 搭建一个超轻量级的 类语言...

FreeBlues
2015/08/31
234
0
Emacs 使用 slime 调用 clisp 失败--无法调用 ASDF--已经解决

Emacs 使用 slime 调用 clisp 失败--无法调用 ASDF 执行到如下顺序时出错 ;; Swank started at port: 61252. CL-USER> ;; Loading file /Users/admin/.slime/fasl/2013-04-02/clisp-2.49-uni......

FreeBlues
2013/06/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

DevExpress WPF v19.1新版亮点:Scheduler等控件新功能

行业领先的.NET界面控件DevExpress 日前正式发布v19.1版本,本站将以连载的形式介绍各版本新增内容。在本系列文章中将为大家介绍DevExpress WPF v19.1中新增的一些控件及部分功能增强,点击下...

FILA6666
4分钟前
0
0
名站技术分析 — facebook奇特的页面加载技术

没事使用代理上了下facebook,注册进入个人首页后,习惯性的查看源代码,发现了1个很有意思的现象,首页内容不少,但源代码中HTML的代码却很少,但去多出了很多段的javascript代码,这些js代...

linux服务器架构
7分钟前
2
0
问题记录

使用springmvc 的@Requestbody注解中文乱码问题 使用工具postman 进行post body json格式传参 一、使用@Requestbody 得到参数值 中文乱码 得到参数集 数据库插入记录 二、使用自己封装的参数...

M得感情的码农
8分钟前
14
0
FCES2019 panel2:消灭水课、锻造金课,金课是怎样炼成的?

全文共1677字,预计学习时长5分钟 博士是科研人才的主力军,然而目前国内的博士生名额分配不足。尤其是随着企业高薪挖人的举措,学术科研人才缺失成了普遍现状。人才储备供给不足,必然会影响...

读芯术
8分钟前
0
0
大数据是啥,可以吃的吗?

作者|影姿 关于大数据是什么,从一开始仅仅只想做数据,到开始意识到自己做的是对整个集团有核心意义的数据产品,再到走到外面,把数据能力对外输出,所有过程中,不断的有客户问到这个问题,...

数澜科技
12分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部