你好,游客 登录 注册 搜索
背景:
阅读新闻

Emacs 安装 clojure开发环境

[日期:2016-01-14] 来源:Linux社区  作者:csfreebird [字体: ]

安装CIDER模块

还是比较简单的,就是用list-packages查找,找到CIDER后,安装。

直接用官方文档的命令安装会失败,还是用上面的方式。

使用middleware匹配版本

工程的project.clj文件中添加倒数第二行

(defproject project1 "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.7.0"]
                [clj-http "2.0.0"]]
  :plugins [[cider/cider-nrepl "0.10.0-SNAPSHOT"]]
  :main project1.core)

启动并连接REPL

打开项目源代码文件core.clj

然后emacs中M-x 运行命令cider-jack-in, 会启动cider-nrepl连接repl进程。出现两个buffer, 上面的是源代码,下面的是repl

当看到下面的这段就好。cider-nrepl做了版本匹配的工作。

; CIDER 0.10.0snapshot (package: 20151013.1548) (Java 1.7.0_79, Clojure 1.7.0, nREPL 0.2.10)
project1.core>

在源代码buffer键入一行代码,光标移动到行尾,按下C-x C-e 运行,结果会显示在repl buffer中。

运行程序

我们可以在REPL中运行程序,可以输入(-main)运行main函数

; CIDER 0.10.0snapshot (package: 20151013.1548) (Java 1.7.0_79, Clojure 1.7.0, nREPL 0.2.10)
project1.core> (-main)
Hello, World!
nil
0
nil
project1.core> (-main "a")
Hello, World!
(a)
1
nil
project1.core>

编译程序

可以继续修改core.clj文件,添加新的函数,然后用C-c C-k编译文件,之后再运行程序。

比如加下面一个函数,然后编译,再运行:

(defn train
  []
  (println "Choo choo!"))

运行结果:

project1.core> (train)
Choo choo!
nil

智能提示

mini buffer里面会提示可能的选择,比如输入(-main的时候,mini buffer会显示剩余的参数

在init.el中添加这段,可以使用company-mode实现自动补全

(add-hook 'cider-repl-mode-hook #'company-mode)
(add-hook 'cider-mode-hook #'company-mode)

其他快捷键

1. C-↵ 会加上右括号,并对表达式求值(evaluate)

获取错误信息

可以用命令(take) 命令,退出stacktrace buffer用q键

以后可以进入*cider-error* buffer查看历史错误信息

其他信息参考官方文档

使用Clojure构建原生Android应用 http://www.linuxidc.com/Linux/2015-09/123628.htm

Clojure:解决Selmer与AngularJS的 标签混淆问题 http://www.linuxidc.com/Linux/2015-01/112321.htm

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-01/127416.htm

linux
相关资讯       Clojure 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款