1. Open emacs24;

  2. Change CWD to parent folder of project home: M-x cd ~/docs/tmp;

  3. Build a leiningen project: M-! lein new calc-cov (see Run Shell Command in Emacs for other method to run shell command in emacs);

  4. Change CWD to project home: M-x cd calc-cov;

  5. Start nrepl server: M-x nrepl-jack-in;

  6. Open source file in another window: C-x 2 C-x C-f src/.../core.clj;

  7. Change the namespace of the REPL to the namespace of the file you are in: C-c M-n;

  8. Evaluate the whole source file: C-c C-k, evaluate a s-exp before the cursor: C-x C-e;

  9. Open clojure doc of the function under the cursor: C-c C-d

  10. Run test: C-c C-,

Frequently used keyboard shortcuts and commands

  • Toggle focus between nrepl window and clojure source file window: C-c C-z (you should add "(add-to-list 'same-window-buffer-names "nrepl")" to ~/.emacs;

  • Always pretty printing in the REPL: M-x nrepl-toggle-pretty-printing

  • Move over sexp: C-M-b/C-M-f;

  • Interrupt any pending evaluations: C-c C-b;

Evaluate a sexp without evaluate all file

  1. Add this sexp into source file (unnecessary to save source file);

  2. Use following methods to evaluate the sexp:

  3. Move cursor to the sexp for test, C-M-x (or C-c C-c) to evaluate the top-level form (such as a defn expression) under the cursor; If you want insert the evaluation result to current buffer, use C-u C-M-x;

  4. If the the target form is not a "top-level" form, move the cursor to the end of this sexp, C-x C-e to evaluate it, See more shortcuts at nrepl official site;

Then this sexp has been added to the repl, you can use it in repl;

This is very helpful in some circumstances. For example, I want debug function "cell-block" (see p141 in "Clojure Programming"), add

(println "[left mid right] is:")
(println [left mid right])

before "(window (map ...)". But You can't evaluate the whole file because there are some lazy sequences and evaluate whole file will cause JVM heap out of memory; So I only evaluate this modified version with C-x C-e, test it in repl. After I figure out how this function works, undo my modification and move on.

Note:

  • In clojure mode with Evil, you have to switch to insert state and put the cursor after the last parenthsis, then evaluate the expression with C-x C-e. If you put the cursor on the last parenthesis in normal state, The result will be wrong.

  • It unnecessary to put your clojure file in a leiningen-created project, which is more flexible than vim-fireplace;

  • The value of expression will be output to the message area (bottom of the emacs window), while the output by "println" will be output to nrepl buffer;

  • Switch cursor between windows: C-x o;

  • Clear repl output: C-c M-o;

  • Indent code blocks intelligently: C-M-q

  • All the keyboard shortcuts will be more convenient if you swap CapsLock key and Escape key, together with Ctrl key and Alt key, see Define Keymap on Ubuntu for detail;

Ref: http://stackoverflow.com/questions/3636364/can-i-clean-the-repl

Ref: Clojure with Emacs

Using Emacs as Clojure IDE的更多相关文章

  1. emacs 配置 clojure

    安装JDK,Version >= 6.0 java -version 2 安装EMACS,Version>=24 在脚本~/.emacs.d/init.el中增加如下内容 (require ...

  2. emacs配置详解及C/C++IDE全功能配置演示(附配置文件)

    我的emacs插件下载地址: http://pan.baidu.com/share/link?shareid=4196458904&uk=3708780105 说明: 1.为什么使用emacs ...

  3. 为了树莓派IIraspberrypi安装emacs+ecb+cedet+session+color-theme+cscope+linum

    类似这篇文章写的不多,为了避免以后大家转来转去而忽略了写文章的时间,这些特别加上是2014年6月28日,省的对不上一些软件的版本号(下文中有些"最新"的说法就相应这个时间).假设转 ...

  4. CentOS6.x之emacs安装配置编译

    刚开始学习linux,干学没什么意思,想在linux下写写程序,了解到linux下使用较多的是emacs和vim,在youtobe上分别看了看这两个工具进行开发的视频,个人感觉emacs比较酷一点,所 ...

  5. JVM 平台上的各种语言的开发指南

    JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...

  6. 2017-05-4-C语言学习笔记

    C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...

  7. YASM User Manual

    This document is the user manual for the Yasm assembler. It is intended as both an introduction and ...

  8. Linux 下配置 Python IDE——Emacs

    工欲善其事,必先利其器.Python作为高级语言,因为其简介.灵活已经被越来越多的程序员所青睐.在尝试了众多IDE之后,终于找到了自己的挚爱.废话少说,下面开始说一下如何在linux下安装配置Emac ...

  9. 只有文本编辑器才是王道, 什么ide都是evil的浮云, 看看linus linux的内核开发工具vim emacs

    只有文本编辑器才是王道, 什么ide都是evil的浮云, 看看linus linux的内核开发工具vim emacs [ide is evil] (http://i.cnblogs.com/EditP ...

随机推荐

  1. css 设置body背景图片铺满

    background-image: url(../../../assets/images/workflow/work.png); background-repeat: no-repeat; backg ...

  2. 「万字图文」史上最姨母级Java继承详解

    摘要:继承是面向对象软件技术中的一个概念.它使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用. 本文分享自华为云社区<「万字图文」史上最姨母级Java继承详解丨[奔跑吧!JAVA] ...

  3. Linux:CentOS-7常用命令

    查看进程 1. ps -ef | grep #查看进程 ps -ef | grep 名称 #示例 ps -ef | grep docker 2. ps aux #当前所有进程信息 ps aux VSZ ...

  4. 14 shell 函数

    1.shell函数的定义与调用 2.shell函数参数 3.函数返回值 1.shell函数的定义与调用 Shell 函数定义 说明 函数定义的简化写法 函数调用 function name() {   ...

  5. Java | 字符串的使用 & 分析

    字符串 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,在程序中所有的双引号字符串,都是String类的对象. 字符串的特点 1.字符串的内容永不可变. 2.正在是因为字符串的不 ...

  6. IP地址与子网化分

    IP地址与子网掩码 一.IP地址的组成 二.IP地址的分类                            1)A.B.C三类地址的组成                            2 ...

  7. Antilibrary能拯救稍后不读吗

    从「稍后再读」到「再也不读」 上学时,我有一套自认为很高效的资料搜集工作流.大致流程是浏览到感兴趣或可能有用的信息时,粗略扫过一眼后即用 Pocket 将其保存为稍后再读,随后借助 IFTTT 的某个 ...

  8. CTF-wtc_rsa_bbq-writeup

    wtc_rsa_bbq 题目信息: 附件: cry200 解题思路: 1.观察cry200文件,发现该文件是一个二进制文件,用二进制模式查看,发现开头为50 4B 03 04,判断该文件是一个zip文 ...

  9. 根据序列号查IP

    def getIP():#得到当前电脑IP import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(( ...

  10. File类与常用IO流第九章——转换流

    第九章.转换流 字节编码和字符集 编码:按照某种规则将字符以二进制存储到计算机中. 解码:将存储在计算机中的二进制数按照某种规则解析显示出来. 字符编码:Character Encoding ,就是一 ...