39

我想为 clojure 代码获得一个彩色的 REPL,类似于你可以用 IRB 为 Ruby 做的事情。

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

示例 IRB:

替代文字

4

11 回答 11

26

在这里参加聚会已经很晚了,但是您可以通过使用 Leiningen 插件Ultra(它还支持彩色堆栈跟踪和漂亮打印的测试输出)或将Whidbey添加到您的 Leiningen 插件列表中来获得它。

超 REPL 示例:在此处输入图像描述

于 2015-02-05T00:14:31.047 回答
17

我不知道有什么方法可以让基本的 Clojure REPL 开始,比如java -cp clojure.jar clojure.main,做语法高亮。但是,如果您使用 Emacs 和 SLIME(Clojure 社区的大部分选择的开发环境!),那么您可以像使用 SLIME REPL 一样高亮语法clojure-mode

首先,您必须从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黑客,所以我就不说了。:-)

于 2010-03-19T05:54:29.077 回答
9

If you just want to color the prompt and you are using Leiningen (which you should), you can use :repl-options and ANSI escape sequences:

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

References:

于 2013-05-13T15:18:50.343 回答
5
  • 安装 Emacs 24
  • 安装Emacs Starter Kit v2
  • M-x package-install->starter-kit-lisp
  • 添加到 init.el:(add-hook 'slime-repl-mode-hook 'clojure-mode-font-lock-setup)
  • 为 Clojure安装Swank
  • 打开你的 Clojure 项目,然后M-x clojure-jack-in

Emacs REPL

于 2011-09-29T20:06:58.680 回答
2

试试 Chris Granger 的 Light Table Playground。它是更雄心勃勃的多语言 IDE 的第一部分。

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

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

您可以在此处查看项目的更高级别视图:

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

于 2012-07-25T15:39:39.067 回答
2

一些着色在 VimClojure 中有 REPL。

于 2010-03-19T05:01:41.490 回答
2

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

(setq cider-repl-use-clojure-font-lock t)
于 2014-06-09T12:52:08.480 回答
1

如果您是 Intellij 用户,那么出色的Cursive是一个不错的选择,它提供了可以自定义的漂亮颜色:

在此处输入图像描述

于 2015-02-05T09:34:43.470 回答
1

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

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

于 2011-07-14T12:48:35.560 回答
0

To get your REPL output colorized try repl-color

enter image description here

于 2014-08-30T21:53:38.210 回答
0

你可以试试 LightTable,它可以让你选择功能并立即运行。

于 2015-02-05T13:09:20.360 回答