求推荐Clojure开发工具

156 views
Skip to first unread message

bruce li

unread,
Oct 5, 2012, 7:38:38 AM10/5/12
to cn-cl...@googlegroups.com
大家好,我最近开始接触clojure,接触的理由也很简单,因为不想写java又要用jvm,加上原来看了一些common lisp的东西,所以选择clojure。

以前用的swank-clojure,作者说swank-clojure不更新了,而且试用感觉是,swank-clojure的stack trace里面没有内容,不显示locals,也不定位到代码相应位置,感觉使用起来不方便。现在写clojure使用的是Emacs + SLIME + Ritz, Ritz以前叫swank-clj, 在youtube上看过一段视频,感觉很酷,  但目前感觉Ritz有几个问题:

1. Ritz 作者说现在默认disable 了slime-break-on-exception,但我把这个选项打开,SLDB很多时候还是不能pop up,即便产生了Exception,但是有的时候SLDB又是work的,不知道大家有没有遇到过同样情况,这个在使用nrepl的时候也有过

2. rtiz的jack in从来没有成功过.. 我已经在.emacs中设置了: 
(setq clojure-swank-command "lein ritz-in %s")
貌似lein ritz-in  后面跟的参数应该是一个端口号.. 这里 %s最后似乎会被填入 project的路径,导致命令失败

在这里向各位求教clojure合适的开发组件,希望能够接近SLIME开发common lisp的感觉..

最后再弱弱的问句.. 怎么disable  lein2的ipv6通道.. 貌似lein1从clojar上下载包的时候直接使用ipv4协议,但lein2就会使用ipv6协议,导致time out...但是目前ritz什么的貌似从0.5.0起就不怎么友好的支持lein 1了(ps.. 写ritz的hugo同学似乎一直用lein 2,以前几个版本也经常忘记修改文件).. 


Robert Luo

unread,
Oct 5, 2012, 7:46:35 AM10/5/12
to cn-cl...@googlegroups.com
就目前来说似乎 swank-clojure 还是比 ritz 要成熟一点。swank-clojure 的主要弱点是 slime,版本复杂,这是将要被放弃的原因。但至少目前 swank 还是不错的,其 stack trace 东西很全,可以显示 local,进行调试,和定位代码位置。应该是你的设置有问题,所以这些出不来。试试看在全新的 emacs 24 上重新配置:
  1. 安装 emacs-starter-kit
  2. 安装 clojure-mode 
我自己试用 ritz 0.5.0 遇到的问题是慢、而且打开 slime-break-on-exception 也不管用。

bruce li

unread,
Oct 5, 2012, 8:00:25 AM10/5/12
to cn-cl...@googlegroups.com
谢谢,能分享一下您的配置么?

现在我使用swank-clojure,运行如下代码:

(defn hello [x y]
  (print x y)
  (throw (Exception. "hello")))

在stack trace里面看到local信息:
Restarts:
 0: [QUIT] Quit to the SLIME top level

Backtrace:
  0:          core.clj:5 practise.core/hello
      [No Locals]
  1:    NO_SOURCE_FILE:1 user/eval2345
  2:  Compiler.java:6511 clojure.lang.Compiler.eval
  3:  Compiler.java:6477 clojure.lang.Compiler.eval
  4:       core.clj:2797 clojure.core/eval

如果修改一下,添加一个swank.core/break,则可以显示:
Backtrace:
  0:          core.clj:6 practise.core/hello
      Locals:
        x = 1
        y = 2
  1:    NO_SOURCE_FILE:1 user/eval2374

我的.emacs中没有作什么配置,仅仅是添加了clojure-mode,emacs版本是24.2.1



--
中文社区博客:http://blog.clojure.cn/
中文问答网站:http://ask.clojure.cn/
中文邮件列表:https://groups.google.com/d/forum/cn-clojure?hl=zh-CN
---
您收到此邮件是因为您订阅了 Google 网上论坛的“CN-Clojure”论坛。
要向此网上论坛发帖,请发送电子邮件至 cn-cl...@googlegroups.com
通过以下网址访问此论坛:http://groups.google.com/group/cn-clojure?hl=zh-CN。
 
 

Issaria Peng

unread,
Oct 5, 2012, 9:19:27 AM10/5/12
to cn-cl...@googlegroups.com
About emacs configuration for clojure development,  emacs-live from overtune is fully functional and easy to start with.
Check out the screencast: http://vimeo.com/22798433

2012/10/5 bruce li <leil...@gmail.com>

Robert Luo

unread,
Oct 5, 2012, 9:37:09 PM10/5/12
to cn-cl...@googlegroups.com
这种状况是正常的。因为在异常被捕捉到的时候,程序已经执行完成了你的 hello 函数,因此没有 local 了。加上 break 以后才可以看到在抛出异常前的 local。

现在可以用 swank.cdt 来代替 swank.core/break 来设置断点,这样不需要修改程序,更方便一点。

楼上那位朋友推荐的 emacs-live,我专门去试了试,它和 emacs-starter-kit 比较类似,更炫一点,不过仍然需要 swank 或 ritz 来解决调试问题。

帝归

unread,
Oct 5, 2012, 11:22:55 PM10/5/12
to cn-cl...@googlegroups.com
不是现在都用nREPL了么?
--
‘(hello world)

bruce li

unread,
Oct 6, 2012, 9:51:58 PM10/6/12
to cn-cl...@googlegroups.com
谢谢,我后来问ritz作者Hugo了,他说是Abort的时候没有清理掉Abort Level,所以导致后面的Exception被忽略了,具体是这个Issue: 
https://github.com/pallet/ritz/issues/51

Ritz Jack-in 出错是因为我的clojure mode有点旧了-_-!,当时从一个人的git 下clone出来的,可能他很久没有维护了吧, jack-in 命令的接口不对

后来try 了一下emacs-live,感觉也还不错,不过现在暂时用ritz吧,ritz最主要问题是启动超级的慢..

再次谢谢各位帮忙啦!

Thanks,
Bruce Li

在 2012年10月6日 上午9:37,Robert Luo <l...@basecity.com>写道:

Neo Lee

unread,
Oct 8, 2012, 4:25:45 AM10/8/12
to cn-cl...@googlegroups.com
貌似 ritz 也需要使用一个定制版本的 SLIME,这点很令人不快,SLIME 本身又是个开发很活跃的东西。。。

2012/10/5 Robert Luo <l...@basecity.com>

--
中文社区博客:http://blog.clojure.cn/
中文问答网站:http://ask.clojure.cn/
中文邮件列表:https://groups.google.com/d/forum/cn-clojure?hl=zh-CN
---
您收到此邮件是因为您订阅了 Google 网上论坛的“CN-Clojure”论坛。
要向此网上论坛发帖,请发送电子邮件至 cn-cl...@googlegroups.com
通过以下网址访问此论坛:http://groups.google.com/group/cn-clojure?hl=zh-CN。
 
 



--
No, I will not fix your computer!

neo...@gmail.com

James Qiu

unread,
Oct 9, 2012, 3:28:55 AM10/9/12
to cn-cl...@googlegroups.com
别折腾,用 Eclipse 或者 Intellij IDEA 土是土点,挺好的。
现在谁的笔记本没个8G以上内存呀。

resolute chen

unread,
Oct 9, 2012, 3:30:47 AM10/9/12
to cn-cl...@googlegroups.com
在安装technomancy-leiningen-2.0.0-preview10的时候抛出了一个异常

这个是什么原因造成的?
java.io.FileNotFoundException: C:\leiningen\target\stale:extract-native.dependencies (文件名、目录名或卷标语法不正确。)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.(Unknown Source)
at clojure.java.io$fn8328.invoke(io.clj:234)
at clojure.java.io$fn
8252$G82288259.invoke(io.clj:73)
at clojure.java.io$fn8302.invoke(io.clj:170)
at clojure.java.io$fn
8278$G82328285.invoke(io.clj:73)
at clojure.java.io$writer.doInvoke(io.clj:123)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at clojure.lang.AFn.applyToHelper(AFn.java:161)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at clojure.core$apply.invoke(core.clj:603)
at clojure.core$spit.doInvoke(core.clj:6139)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at leiningen.core.classpath$whenstale.doInvoke(classpath.clj:65)
at clojure.lang.RestFn.invoke(RestFn.java:529)
at leiningen.core.classpath$resolve_dependencies.doInvoke(classpath.clj:172)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at leiningen.core.classpath$get_classpath.invoke(classpath.clj:214)
at leiningen.core.project$init_lein_classpath.invoke(project.clj:400)
at leiningen.core.project$init_project.invoke(project.clj:407)
at leiningen.core.main$_main$fn
_885.invoke(main.clj:212)
at leiningen.core.main$_main.doInvoke(main.clj:209)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.Var.invoke(Var.java:411)
at clojure.lang.AFn.applyToHelper(AFn.java:159)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.core$apply.invoke(core.clj:601)
at clojure.main$main_opt.invoke(main.clj:324)
at clojure.main$main.doInvoke(main.clj:427)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:419)
at clojure.lang.AFn.applyToHelper(AFn.java:163)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.main.main(main.java:37)

James Xu

unread,
Oct 9, 2012, 3:35:54 AM10/9/12
to cn-cl...@googlegroups.com
8G以上。。我的4G我以为已经算多了

James Qiu

unread,
Oct 9, 2012, 3:36:56 AM10/9/12
to cn-cl...@googlegroups.com
插满为止,我的16G

Shouxun Yang

unread,
Oct 9, 2012, 3:41:15 AM10/9/12
to cn-cl...@googlegroups.com
近来觉得emacs-live不错,就是自动完成有时老抛异常有点烦。我的才2G,就用Emacs

2012/10/9 James Qiu <james...@gmail.com>:

Issaria Peng

unread,
Oct 9, 2012, 4:11:34 AM10/9/12
to cn-cl...@googlegroups.com
我也遇到这个问题
2012/10/9 Shouxun Yang <yang.s...@gmail.com>

James Qiu

unread,
Oct 9, 2012, 4:48:34 AM10/9/12
to cn-cl...@googlegroups.com

我用emacs不多,但2.4在win7 64位上连个打开文件对话框都经常无响应,大大影响使用体验;
就稳定性和gvim来比,简直就是渣。

Shouxun Yang

unread,
Oct 9, 2012, 4:54:45 AM10/9/12
to cn-cl...@googlegroups.com
你说的是Emacs24吧。我从Emacs 20一直用到现在,Emacs本身还是非常稳定的。

2012/10/9 James Qiu <james...@gmail.com>:

James Qiu

unread,
Oct 9, 2012, 5:03:17 AM10/9/12
to cn-cl...@googlegroups.com

是24.2.1,还有和google输入法冲突,切换不出输入法来

James Xu

unread,
Oct 9, 2012, 5:04:26 AM10/9/12
to cn-cl...@googlegroups.com
这个应该是GUI版本的都有这个问题, CTRL+SPACE快捷键冲突。

Shouxun Yang

unread,
Oct 9, 2012, 5:25:10 AM10/9/12
to cn-cl...@googlegroups.com
我一般把输入法的快捷键改成别的,否则Emacs用起来很不方便

2012/10/9 James Xu <xumingmin...@gmail.com>:

Qiu Xiafei

unread,
Oct 9, 2012, 7:19:57 AM10/9/12
to cn-cl...@googlegroups.com
emacs手指累....用mac之后出于键盘的原因跟emacs说拜拜了。

2012/10/9 Shouxun Yang <yang.s...@gmail.com>

Issaria Peng

unread,
Oct 9, 2012, 7:25:52 AM10/9/12
to cn-cl...@googlegroups.com
用Emacs第一件事就是把CapLock映射成Ctrl

2012/10/9 Qiu Xiafei <qiux...@gmail.com>

bruce li

unread,
Oct 9, 2012, 7:27:01 AM10/9/12
to cn-cl...@googlegroups.com
mac上command键据说对emacs很有用的?

James Xu

unread,
Oct 9, 2012, 7:28:16 AM10/9/12
to cn-cl...@googlegroups.com
那当你再用普通键盘的时候不会觉得很不适应么?

NiHuaJie

unread,
Oct 9, 2012, 7:33:37 AM10/9/12
to cn-cl...@googlegroups.com
emacs24以后好像command键盘不用了吧,现在用alt了,弄得我迷惘了很久

Ryan

unread,
Oct 11, 2012, 10:30:20 AM10/11/12
to cn-cl...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages