thn*_*tos 37 syntax-highlighting colors clojure read-eval-print-loop
我想为clojure代码获得一个彩色的REPL,类似于使用IRB for Ruby可以做的事情.
user.clj是否有任何提供REPL自动着色的库或设置?
示例IRB:

Mic*_*zyk 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))))
Run Code Online (Sandbox Code Playgroud)
然后将其添加到slime-repl-mode-hook:
(add-hook 'slime-repl-mode-hook
(lambda ()
(font-lock-mode nil)
(clojure-font-lock-setup)
(font-lock-mode t)))
Run Code Online (Sandbox Code Playgroud)
Etvoilà,下次连接到SLIME REPL时,您将获得clojure-mode语法高亮显示.如果你也使用SLIME for Common Lisp,你会想要调整它,所以它不会尝试使用CL进行Clojure突出显示.而且,这只是第一次近似; 它有一点突破是提示突出显示(namespace>事情不再突出显示).不过,我不是font-lock任何想象中的熟练黑客,所以我会留下它.:-)
如果你只是想要的颜色的提示,并且使用Leiningen(你应该),你可以使用:repl-options和ANSI转义序列:
:repl-options {:prompt (fn [ns]
(str "\033[1;32m"
ns "=>"
"\033[0m "))}
Run Code Online (Sandbox Code Playgroud)
参考文献:
M-x package-install - > starter-kit-lisp(add-hook 'slime-repl-mode-hook 'clojure-mode-font-lock-setup)M-x clojure-jack-in
| 归档时间: |
|
| 查看次数: |
7981 次 |
| 最近记录: |