我想为 clojure 代码获得一个彩色的 REPL,类似于你可以用 IRB 为 Ruby 做的事情。
user.clj 是否有任何提供 REPL 自动着色的库或设置?
示例 IRB:
我想为 clojure 代码获得一个彩色的 REPL,类似于你可以用 IRB 为 Ruby 做的事情。
user.clj 是否有任何提供 REPL 自动着色的库或设置?
示例 IRB:
我不知道有什么方法可以让基本的 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
黑客,所以我就不说了。:-)
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:
M-x package-install
->starter-kit-lisp
(add-hook 'slime-repl-mode-hook 'clojure-mode-font-lock-setup)
M-x clojure-jack-in
试试 Chris Granger 的 Light Table Playground。它是更雄心勃勃的多语言 IDE 的第一部分。
它有一个彩色 Clojure REPL,可以对整个代码块进行实时评估和显示。
http://www.chris-granger.com/lighttable/
您可以在此处查看项目的更高级别视图:
一些着色在 VimClojure 中有 REPL。
CIDER用户可以通过将以下内容添加到他们的配置中来获得彩色 REPL:
(setq cider-repl-use-clojure-font-lock t)
如果您是 Intellij 用户,那么出色的Cursive是一个不错的选择,它提供了可以自定义的漂亮颜色:
To get your REPL output colorized try repl-color
你可以试试 LightTable,它可以让你选择功能并立即运行。