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:

alt text

War es hilfreich?

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

Eher spät zur Party, hier, aber man kann diese erhalten von der Nutzung der Leiningen-Plugin Ultra- ( das hat auch Unterstützung für kolorierte stacktraces und ziemlich druckten Testausgang) oder durch Hinzufügen von Whidbey in der Liste der Leiningen Plugins statt.

Beispiel Ultra-ERSATZ: eingeben Bild Beschreibung hier

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:

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:

http://www.kickstarter.com/projects/ibdknox/light-table

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:

eingeben Bild Beschreibung hier

Um Ihre REPL Ausgabe versuchen COLORIZED repl-Farbe

eingeben Bild Beschreibung hier

Sie können Leuchttisch versuchen, es können Sie die Funktionen auswählen und sofort ausgeführt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top