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
有些着色在VimClojure中有REPL。
尝试克里斯·格兰杰轻桌游乐场。 它是更多环境多语言IDE的第一部分。
它有一个颜色Clojure REPL,可以对整个代码块进行实时评估和显示。
http://www.chris-granger.com/lighttable/
你可以在这里看到更高层次的项目视图:
CIDER用户可以通过将以下内容添加到他们的configuration中来获得一个彩色的REPL:
(setq cider-repl-use-clojure-font-lock t)
Eclipse 逆时针 REPL提供完整的语法着色(包括彩虹支架着色)。
我相信它在引擎盖下使用nREPL 。
为了让你的REPL输出彩色尝试repl-color
如果你是一个Intellij用户,优秀的Cursive是一个很好的select,并提供你可以自定义的漂亮的颜色:
你可以试试LightTable,它可以让你selectfunction并立即运行。