37 votes

Existe-t-il un REPL coloré pour Clojure ?

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 :

alt text

17voto

Michał Marczyk Points 54179

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à :-)

9voto

0x89 Points 1292

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 :

5voto

Sridhar Ratnakumar Points 12390
  • Installer Emacs 24
  • Installer Kit de démarrage Emacs v2
  • M-x package-install -> starter-kit-lisp
  • Ajouter à init.el : (add-hook 'slime-repl-mode-hook 'clojure-mode-font-lock-setup)
  • Installer Swank pour Clojure
  • Ouvrez votre projet Clojure et M-x clojure-jack-in

Emacs REPL

2voto

W55tKQbuRu28Q4xv Points 1547

Certaines colorations ont REPL dans VimClojure.

2voto

dansalmo Points 3220

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 :

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

Prograide.com

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.

Powered by:

X