J'aimerais avoir un REPL coloré pour le code clojure, similaire à ce que l'on peut faire avec IRB pour Ruby.
Existe-t-il des bibliothèques ou des paramètres pour user.clj qui permettent de colorer automatiquement le REPL ?
Exemple de CISR :
J'aimerais avoir un REPL coloré pour le code clojure, similaire à ce que l'on peut faire avec IRB pour Ruby.
Existe-t-il des bibliothèques ou des paramètres pour user.clj qui permettent de colorer automatiquement le REPL ?
Exemple de CISR :
Je ne connais aucun moyen d'avoir le REPL Clojure de base, tel que lancé par quelque chose comme java -cp clojure.jar clojure.main
pour faire la coloration syntaxique. Cependant, si vous utilisez Emacs et SLIME (l'environnement de développement préféré d'une grande partie de la communauté Clojure !), vous pouvez demander au REPL de SLIME de mettre en évidence la syntaxe comme suit clojure-mode
fait.
Tout d'abord, vous devrez reprendre un peu de code de l'application clojure-mode
(définie vers le haut de la page 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))))
Puis l'ajouter à la 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à, la prochaine fois que vous vous connecterez au SLIME REPL, vous aurez clojure-mode
la coloration syntaxique est disponible. Si vous utilisez également SLIME pour Common Lisp, vous devrez modifier cette fonction afin qu'elle n'essaie pas de faire la mise en évidence de Clojure avec CL. De plus, il ne s'agit que d'une première approximation ; la mise en évidence des invites est en quelque sorte interrompue (la balise namespace>
ne sera plus mis en évidence). Je ne suis pas un expert font-lock
Je ne suis pas un pirate informatique, loin s'en faut, alors je m'en tiendrai là :-)
Si vous souhaitez simplement colorer l'invite et que vous utilisez la fonction Leiningen (ce que vous devriez faire), vous pouvez utiliser :repl-options
y Séquences d'échappement ANSI :
:repl-options {:prompt (fn [ns]
(str "\033[1;32m"
ns "=>"
"\033[0m "))}
Références :
M-x package-install
-> starter-kit-lisp
(add-hook 'slime-repl-mode-hook 'clojure-mode-font-lock-setup)
M-x clojure-jack-in
Essayez Light Table Playground de Chris Granger. C'est la première partie d'un IDE multi-langue plus ambitieux.
Il dispose d'un REPL Clojure en couleur qui effectue des évaluations et un affichage en temps réel pour des blocs entiers de code.
http://www.chris-granger.com/lighttable/
Vous pouvez voir une vue d'ensemble du projet ici :
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.