我想爲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