我想为clojure代码获取一个彩色的REPL,类似于您可以使用IRB for Ruby所做的操作。Clojure有没有彩色的REPL?
是否有提供自动着色REPL的user.clj的库或设置?
例IRB:
我想为clojure代码获取一个彩色的REPL,类似于您可以使用IRB for Ruby所做的操作。Clojure有没有彩色的REPL?
是否有提供自动着色REPL的user.clj的库或设置?
例IRB:
我不知道有什么办法让基本的Clojure REPL,像java -cp clojure.jar clojure.main
之类的东西开始,做语法高亮。但是,如果您使用Emacs & SLIME(Clojure社区绝大部分的开发环境!),那么您可以使用SLIME REPL高亮语法,如clojure-mode
。
;;; 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)))
的Et瞧
首先,你必须解除从clojure-mode
功能的一些代码(朝clojure-mode.el
顶部定义) ,下次连接到SLIME REPL时,将会有clojure-mode
语法突出显示。如果你也对Common Lisp使用SLIME,你会想调整它,所以它不会尝试用CL来做Clojure突出显示。另外,这只是第一个近似值;有一件事是突出显示(namespace>
事情不会再突出显示)。尽管如此,我并不是一个精通font-lock
黑客的人,所以我会留下它。 :-)
哦,顺便说一下,这真的*取代* SLIME REPL突出与clojure-模式突出显示......通常的REPL有一些有用的东西可以突出显示在使用这个时可能会丢失哪些信息。希望在某些时候可以对此进行细化,以减少这种交换。 – 2010-03-19 06:11:14
不幸的是,我不是Emacs用户,但这看起来很酷。 – thnetos 2010-03-19 15:56:06
@thnetos:谢谢! @所有这些可能涉及到的人:我已经把代码放在Gist这里:http://gist.github.com/337280 - 当前版本包含两个'defadvice',用于在* out中提示和打印输出*'突出显示,因为他们通常在SLIME REPL中,而其他一切仍然获得clojure模式亮点。 – 2010-03-28 02:27:34
有些着色有REPL在VimClojure。
Eclipse Counterclockwise REPL提供完整的语法着色(包括彩虹支架着色)。
我相信它在底层使用nREPL。
是的,它确切地使用nRepl,但采用自定义着色策略,当然可以配置(贡献者@在这里) – 2015-09-09 16:03:40
M-x package-install
- >starter-kit-lisp
(add-hook 'slime-repl-mode-hook 'clojure-mode-font-lock-setup)
M-x clojure-jack-in
这应该更新为使用https://github.com/kingtim/nrepl。el而不是swank-clojure – 0x89 2013-05-13 15:19:40
试用克里斯格兰杰轻桌游乐场。它是更环保的多语言IDE的第一部分。
它有一个颜色Clojure REPL,可以对整个代码块进行实时评估和显示。
http://www.chris-granger.com/lighttable/
你可以看到该项目的更高级别的视图位置:
如果你只是想要的颜色的提示,并且使用Leiningen(你应该),你可以使用:repl-options
和ANSI escape sequences:
:repl-options {:prompt (fn [ns]
(str "\033[1;32m"
ns "=>"
"\033[0m "))}
参考文献:
为了使这适用于您的用户而不是单个项目,请将此添加到'〜/ .lein/profiles.clj'中。 – 2014-02-12 15:35:23
将它放在'〜/ .lein/profiles.clj'中以获得全局颜色repl:'{:user {:repl-options {:prompt(fn [ns](str“\ 033 [1; 32m”ns“=>”“\ 033 [0m”))}}}' – 2014-03-23 12:04:02
当添加到'〜/ .lein/profiles.clj',把配置放在':repl'配置文件中,而不是':user'。所以结构是'{:repl {:repl-options {:prompt ...}}}'。这确保了配置只是为'lein repl'定义的,而不是像'lein test'这样的其他子命令。 – 2015-11-30 07:21:07
CIDER用户可以通过添加以下到他们的配置获得着色REPL:
(setq cider-repl-use-clojure-font-lock t)
为了让您的REPL输出着色试repl-color
如果你是一个用户的IntelliJ,优秀的Cursive是一个不错的选择,并提供漂亮的颜色,你可以自定义:
你可以试试LightTable,它可以让你选择功能并立即运行。
太漂亮了!我怎么能得到这个SLIME REPL? – Zolomon 2011-04-16 22:04:57
@Zolomon - 请参阅下面的答案。 – 2011-09-29 20:16:14
相似的问题:[做什么使'lein repl'五颜六色?](http://stackoverflow.com/q/19500353/578288) – 2014-10-01 08:45:28