Gibt es eine farbige REPL für Clojure?
-
21-09-2019 - |
Frage
Ich möchte einen farbigen REPL für Clojure-Code erhalten, ähnlich dem, was Sie mit IRB für Ruby tun können.
Gibt es Bibliotheken oder Einstellungen für user.clj die automatische Färbung des REPL liefern?
Beispiel IRB:
Lösung
Ich weiß nicht, von keiner Weise den Grundes Clojure REPL zu haben, wie es so etwas wie java -cp clojure.jar clojure.main
gestartet, tue Syntaxhervorhebung. Wenn jedoch verwenden Sie Emacs & SLIME (die Entwicklungsumgebung der Wahl eines großen Teils der Clojure-Community!), Dann können Sie die SLIME REPL Highlight Syntax wie clojure-mode
hat.
Als erstes werden Sie einen Code aus der clojure-mode
Funktion heben müssen (definiert nach oben hin von 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))))
Dann fügen Sie es den slime-repl-mode-hook
:
(add-hook 'slime-repl-mode-hook
(lambda ()
(font-lock-mode nil)
(clojure-font-lock-setup)
(font-lock-mode t)))
Et voilà, das nächste Mal, wenn Sie auf die SLIME REPL verbinden werden Sie clojure-mode
Syntax-Markierung zur Verfügung haben. Wenn Sie SLIME für Common Lisp verwenden, werden Sie diese optimieren wollen, damit es nicht Clojure nicht versuchen, mit CL Hervorhebung zu tun. Auch dies ist nur eine erste Annäherung; eine Sache, es ist eine Art von Pausen ist prompt Hervorhebung (die namespace>
Sache wird nicht mehr hervorgehoben werden). Ich bin nicht ein geübter font-lock
Hacker von einer Strecke der Phantasie, obwohl, so dass ich es dabei belassen würde. : -)
Andere Tipps
Wenn Sie nur die Eingabeaufforderung zu färben und Sie verwenden Leiningen (die Sie sollten), Sie können :repl-options
und ANSI-escape-Sequenzen :
:repl-options {:prompt (fn [ns]
(str "\033[1;32m"
ns "=>"
"\033[0m "))}
Referenzen:
- GitHub - Technomantie / Leiningen -
sample.project.clj
-
- Installieren Emacs 24
- Installieren Emacs Starter Kit v2
-
M-x package-install
->starter-kit-lisp
- In der init.el:
(add-hook 'slime-repl-mode-hook 'clojure-mode-font-lock-setup)
Installieren - Swank für Clojure
- Öffnen Sie Ihre Clojure Projekt und
M-x clojure-jack-in
Einige Färbung haben REPL in Vim Clojure.
Versuchen Sie Light Table Spielplatz von Chris Granger. Es ist der erste Teil von mehr ambitous Multi-Language-IDE.
Es hat eine Farbe Clojure REPL, das tut Echtzeitauswertung und Anzeige für ganze Codeblöcke.
http://www.chris-granger.com/lighttable/
Sie können eine höhere Ansicht des Projekts sehen hier:
CIDER Benutzer kann durch Hinzufügen des folgenden ihre Config eine farbige REPL erhalten:
(setq cider-repl-use-clojure-font-lock t)
Die Eclipse Counterclockwise REPL bietet vollständige Syntax-Einfärbung (einschließlich Regenbogen Klammer Färbung).
Ich glaube, es nutzt nREPL unter der Haube.
Wenn Sie ein Intellij Benutzer, die ausgezeichnete Cursive ist eine gute Wahl, und bietet schöne Farben, dass Sie anpassen:
Um Ihre REPL Ausgabe versuchen COLORIZED repl-Farbe
Sie können Leuchttisch versuchen, es können Sie die Funktionen auswählen und sofort ausgeführt werden.