Clojure有没有彩色的REPL?

我想为clojure代码获取一个有色的REPL,类似于您可以使用IRB for Ruby所做的。

user.clj是否有提供REPL自动着色的库或设置?

示例IRB:

替代文字

我不知道有什么办法让基本的Clojure REPL,像java -cp clojure.jar clojure.main这样的东西启动,做语法高亮。 但是,如果您使用Emacs&SLIME(Clojure社区的大部分开发环境!),那么您可以使用clojure-mode的SLIME REPL高亮语法。

首先,你必须从clojure-mode函数中提取一些代码(定义在clojure-mode.el的顶部):

 ;;; all code in this function lifted from the clojure-mode function ;;; from clojure-mode.el (defun clojure-font-lock-setup () (interactive) (set (make-local-variable 'lisp-indent-function) 'clojure-indent-function) (set (make-local-variable 'lisp-doc-string-elt-property) 'clojure-doc-string-elt) (set (make-local-variable 'font-lock-multiline) t) (add-to-list 'font-lock-extend-region-functions 'clojure-font-lock-extend-region-def t) (when clojure-mode-font-lock-comment-sexp (add-to-list 'font-lock-extend-region-functions 'clojure-font-lock-extend-region-comment t) (make-local-variable 'clojure-font-lock-keywords) (add-to-list 'clojure-font-lock-keywords 'clojure-font-lock-mark-comment t) (set (make-local-variable 'open-paren-in-column-0-is-defun-start) nil)) (setq font-lock-defaults '(clojure-font-lock-keywords ; keywords nil nil (("+-*/.<>=!?$%_&~^:@" . "w")) ; syntax alist nil (font-lock-mark-block-function . mark-defun) (font-lock-syntactic-face-function . lisp-font-lock-syntactic-face-function)))) 

然后将它添加到slime-repl-mode-hook

 (add-hook 'slime-repl-mode-hook (lambda () (font-lock-mode nil) (clojure-font-lock-setup) (font-lock-mode t))) 

等等,下一次你连接到SLIME REPL,你会有clojure-mode语法高亮可用。 如果你也使用SLIME作为Common Lisp,那么你会想调整它,所以它不会尝试用CL来做Clojure高亮。 另外,这只是第一个近似值; 有一件事是突出显示( namespace>东西将不会突出显示)。 虽然我不是一个熟练的font-lock黑客,但是,我会留下来的。 🙂

在这里,不要迟到聚会,但是你可以使用Leiningen插件Ultra (它也支持彩色堆栈跟踪和漂亮打印的testing输出),或者将Whidbey添加到您的Leiningen插件列表中。

样品Ultra REPL: 在这里输入图像说明

如果你只是想提示你正在使用Leiningen (你应该),你可以使用:repl-options和ANSI转义序列 :

 :repl-options {:prompt (fn [ns] (str "\033[1;32m" ns "=>" "\033[0m "))} 

参考文献:

  • GitHub – technomancy / leiningen – sample.project.clj
  • roguejs.com – “控制台颜色在node.js”,张贴2011年
  • 安装Emacs 24
  • 安装Emacs入门套件v2
  • Mx package-install – > starter-kit-lisp
  • 添加到init.el:( (add-hook 'slime-repl-mode-hook 'clojure-mode-font-lock-setup)复制(add-hook 'slime-repl-mode-hook 'clojure-mode-font-lock-setup)
  • 安装Swank for Clojure
  • 打开你的Clojure项目和Mx clojure-jack-in

Emacs REPL

有些着色在VimClojure中有REPL。

尝试克里斯·格兰杰轻桌游乐场。 它是更多环境多语言IDE的第一部分。

它有一个颜色Clojure REPL,可以对整个代码块进行实时评估和显示。

http://www.chris-granger.com/lighttable/

你可以在这里看到更高层次的项目视图:

http://www.kickstarter.com/projects/ibdknox/light-table

CIDER用户可以通过将以下内容添加到他们的configuration中来获得一个彩色的REPL:

 (setq cider-repl-use-clojure-font-lock t) 

Eclipse 逆时针 REPL提供完整的语法着色(包括彩虹支架着色)。

我相信它在引擎盖下使用nREPL 。

为了让你的REPL输出彩色尝试repl-color

在这里输入图像说明

如果你是一个Intellij用户,优秀的Cursive是一个很好的select,并提供你可以自定义的漂亮的颜色:

在这里输入图像说明

你可以试试LightTable,它可以让你selectfunction并立即运行。