我想为clojure代码获得一个彩色的REPL,类似于使用IRB for Ruby可以做的事情。
是否有任何用于提供REPL自动着色的user.clj库或设置?
示例IRB:
答案 0 :(得分:23)
派对的时间相当晚,但是你可以通过使用Leiningen插件Ultra(也支持彩色叠加和漂亮打印的测试输出)或添加Whidbey来实现这一点改为你的Leiningen插件列表。
示例Ultra REPL:
答案 1 :(得分:16)
我不知道有什么办法让基本的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)))
Etvoilà,下次连接到SLIME REPL时,您将有clojure-mode
语法高亮显示。如果你也使用SLIME for Common Lisp,你会想要调整它,所以它不会尝试使用CL进行Clojure突出显示。而且,这只是第一次近似;它有一点突破是提示突出显示(namespace>
事物将不再突出显示)。尽管如此,我不是一个熟练的font-lock
黑客,所以我会留下它。 : - )
答案 2 :(得分:9)
如果您只想为提示设置颜色并使用Leiningen(您应该使用),则可以使用:repl-options
和ANSI escape sequences:
:repl-options {:prompt (fn [ns]
(str "\033[1;32m"
ns "=>"
"\033[0m "))}
参考文献:
答案 3 :(得分:5)
M-x package-install
- &gt; starter-kit-lisp
(add-hook 'slime-repl-mode-hook 'clojure-mode-font-lock-setup)
M-x clojure-jack-in
答案 4 :(得分:2)
一些着色在Vim Clojure中有REPL。
答案 5 :(得分:2)
试试Chris Granger的Light Table Playground。这是更多模式的多语言IDE的第一部分。
它有一个颜色Clojure REPL,可以对整个代码块进行实时评估和显示。
http://www.chris-granger.com/lighttable/
您可以在此处查看项目的更高级别视图:
答案 6 :(得分:2)
CIDER用户可以通过在配置中添加以下内容来获取彩色REPL:
(setq cider-repl-use-clojure-font-lock t)
答案 7 :(得分:1)
Eclipse Counterclockwise REPL提供完整的语法着色(包括彩虹括号着色)。
我相信它会使用nREPL。
答案 8 :(得分:1)
如果您是Intellij用户,优秀的Cursive是一个很好的选择,并提供可以自定义的漂亮颜色:
答案 9 :(得分:0)
要让您的REPL输出变为彩色,请尝试repl-color
答案 10 :(得分:0)
您可以尝试使用LightTable,它可以让您选择功能并立即运行。