Emacs + Clojure配置的几个Tip

  很久没更新博客了,在北京工作,忙碌并且充实。目前来说,Clojure最好的开发编辑器应该是Emacs + Slime的组合,利用swank-clojure这个项目,加上clojure-mode,可以完美地运行slime。编译、运行、跳转、文档和引用查看甚至debug都可以搞定。具体配置恕不重复,看swank-clojure的文档即可自己安装起来,或者这篇中文博客windows上配置

    分享几个Tip,也期待大家分享你们的使用心得。

    首先是自动在打开clj后缀文件的时候启动执行clojure-jack-in与slime连接,可以在emacs配置里加上个callback:

(eval-after-load "clojure-mode"
  '(progn
     (require 'slime)
     (require 'clojure-mode)
     (unless (slime-connected-p)
       (save-excursion (clojure-jack-in)))))
    这样在打开clj为后缀的文件的时候,将自动启动clojure-mode执行clojure-jack-in函数并且连接slime。

    将clj后缀的文件自动关联到clojure-mode:

(setq auto-mode-alist (cons '("\\.clj$" . clojure-mode) auto-mode-alist))
    通常来说如果你是利用marmalade安装的,会自动关联的。

    另外,启动自动匹配括号、字符串引号等的paredit模式一定要启动:

(defun paredit-mode-enable () (paredit-mode 1))
(add-hook 'clojure-mode-hook 'paredit-mode-enable)
(add-hook 'clojure-test-mode-hook 'paredit-mode-enable)

   在使用clojure-mode或者clojure-test-mode的时候自动启用paredit模式,括号再也不是问题。括号匹配提示一般是开启的,如果没有,强制开启:

;;    显示括号匹配
(show-paren-mode t)
(setq show-paren-style 'parentheses)

    slime更多配置,启用IO重定向(多线程IO输出都定向到SLIME repl)以及设置通讯字符编码等:

(eval-after-load "slime"
  '(progn
     (slime-setup '(slime-repl slime-fuzzy))
     ;;(setq slime-truncate-lines t)
     (setq  swank:*globally-redirect-io*  t)
     ;; (setq slime-complete-symbol-function ' slime-fuzzy-complete-symbol)
     (setq slime-net-coding-system 'utf-8-unix)))

    细心的朋友可能注意到我注释了slime-fuzzy-complete的配置,这是一个支持更好的自动补全功能的SLIME插件(可以用缩写来自动补全),可惜在我机器上没有尝试配置成功,有兴趣你可以尝试下。

    在REPL里支持语法高亮,一定要配置上:

(add-hook 'slime-repl-mode-hook
          (defun clojure-mode-slime-font-lock ()
            (require 'clojure-mode)
            (let (font-lock-mode)
              (clojure-mode-font-lock-setup))))

    单独在clojure-mode(在其他mode里这些快捷键不会起作用)里配置快捷键可以这样:

(eval-after-load "clojure-mode"
  '(progn
     (require 'slime)
     (require 'clojure-mode)
     (define-key clojure-mode-map (kbd "M-/")  (quote slime-complete-symbol))
     (define-key clojure-mode-map (kbd "C-c s")  (quote slime-selector)))

   例如我这里将M-/作为自动补全的快捷键,因为meta键在我的Mac机器上设置为command键,因此自动补全的操作习惯就跟Eclipse类似。而slime-selector是一个非常有用的函数,用来跳转到slime的一系列buffer,因此我绑定了C-c s快捷键。

    额外一提,在Mac osx下,将command作为meta键:

;;; I prefer cmd key for meta
(setq mac-option-key-is-meta nil
      mac-command-key-is-meta t
      mac-command-modifier 'meta
      mac-option-modifier 'none)

    最后,期待大家不吝分享你的心得

文章转自庄周梦蝶  ,原文发布时间2012-05-19

时间: 2024-11-02 08:31:48

Emacs + Clojure配置的几个Tip的相关文章

ubuntu下emacs如何配置el文件???

问题描述 ubuntu下emacs如何配置el文件??? 首先把nim-mode.el放在/home/nh/.emacs.d/nim-mode-master目录下面了. 然后在-/.emacs中作了如下配置:结果还是能实现相应的配置效果.望各位高手指点: (add-to-list 'load-path (expand-file-name "/home/nh/.emacs.d/nim-mode-master")) (require 'nim-mode) 解决方案 我的.Emacs文件的配

从 Vim 到 Emacs 到 Evil

半个多月前,缘由 Vim 的一点小需求无法实现,我开始尝试 Emacs.从初窥门径到配置出完全满足我的一切,中途曾一度不可自拔,工作之余.入睡之前都在看 Emacs 的文档资料.发现我的控制欲特别强,不达目的不愿罢休.好在 Emacs 的确是个强大的平台,不负我望,在积累了一定的 elisp 基础之后就很快突破瓶颈,轻松定制出自己的编辑器.折腾 Emacs 就是 "山重水复疑无路,柳暗花明又一村",时而线索终端而疲惫不堪,时而找到突破而满是成就感.总的来说 Emacs 的许多功能都无法

!!!!!!!Unbuntu中Java安装配置

Sun JDK的安装基本上有两种方式:    1. 通过Ubuntu提供的包管理工具进行安装  Ubuntu在其包仓库里都包括有JDK的安装,只要sources.list设置正确,通过apt-get, aptitude, Synaptic Package Manager等都能安装,而且相关的设置也容易得多:在Ubuntu的新  发布版本里都带了JDK5.0,和JDK6.0的安装支持,而且版本都比较高,和Sun官方的发布没有很大的 版本落差.以Ubuntu7.10来说,提供的JDK5的版本为:1.

打造你的OSX开发环境

以下App Store上的软件,你值得拥有. Pages, Numbers, Keynote OS X 三件套. Alfred 和 Spotlight 类似,可以快速启动应用程序和打开文件,但是比 Spotlight 体验好很多. 最好直接去 官网 下载 Alfred 2,并且购买 Powerpack,这样才能发挥 Alfred Workflow 的功能,如果不想花钱,最近有一个 Flashlight 也不错,大有赶超 Alfred 之势. OmniGraffle 比较实用的画图工具,和 Vis

诊断Java代码: 设计可扩展应用程序,第3部分

对应于我们上一篇" 诊断 Java 代码"中所讨论的透明盒可扩展性,黑盒可扩展性是指,在源代码既不能查看也不能修改时,可以扩展软件系统的方法.通常通过系统配置或使用特定于应用程序的脚本语言来进行这样的扩展.在本专题中,Eric Allen 讨论了何时设计黑盒可 扩展性的系统是有意义的,并提供了如何有效地实现这一设计的一些想法.阅读了本文后,您将知道何时使用黑盒并掌握如何实现它的一些技巧. 我已在以前的文章中谈到了代码重用设计策略的重要性(主要是因为各种信息处理任务的差异和相应费用的增加

【菜鸟翻译】Creating an Android Project

Creating an Android Project PREVIOUSNEXT THIS LESSON TEACHES YOU TO Create a Project with Eclipse Create a Project with Command Line Tools YOU SHOULD ALSO READ Installing the SDK Managing Projects An Android project contains all the files that compri

是否存在一种专门编辑文本的脚本语言?

据大家所知,有没有这样一种脚本语言:专门用于编辑文本信息? 我现在是比较习惯 Emacs 的快捷键,而且最近使用的键盘按方向键不太方便,所以很希望所使用的软件都能用 Emacs 的快捷键来操作. 一开始,我使用 XKeymacs (日本人开发的一款小工具),它能把 Windows 下所有应用程序的快捷键都转换成 Emacs 的.不过这个软件不太稳定,和 mitty 等软件配合得也不好:可配置性也不强,只能选择是否启用某些快捷键. 后来我想到 AutoHotKey,它算是一门脚本语言,可以用脚本模

emacs配置有冲突,不知道问题出在哪了

问题描述 emacs配置有冲突,不知道问题出在哪了 下面是我的配置,像下面这样子配置之后,****之上的部分配置就生效,而启动设置以下的部分都没有生效,而,当我把****之上的部分放到最后时,打开emacs就会提示"multi-gud.el"was not provided, 其他部分的配置也会生效. 请问有没有人知道是哪里出了问题? ;;evil (require 'package) (add-to-list 'package-archives '("melpa"

Clojure世界:使用rlwrap增强REPL

   Clojure的REPL非常方便,可以随时随地试验你的想法,REPL是read-eval-print-loop的简称.默认clojure.contrib有带一个shell脚本来启动REPL,具体看这里.你也可以用JLine来增强REPL: java -cp "%CLOJURE_DIR%\jline-VERSION.jar;%CLOJURE_JAR%" jline.ConsoleRunner clojure.main     不过,其实你还可以用rlwrap这个GNU库来增强clo