Есть ли цветной REPL для Clojure? - PullRequest
37 голосов
/ 19 марта 2010

Я хотел бы получить цветной REPL для кода clojure, аналогично тому, что вы можете сделать с IRB для Ruby.

Существуют ли какие-либо библиотеки или настройки для user.clj, обеспечивающие автоматическое окрашивание REPL?

Пример IRB:

alt text

Ответы [ 11 ]

24 голосов
/ 05 февраля 2015

Скорее поздно для вечеринки, но вы можете получить это, используя плагин Leiningen Ultra (который также имеет поддержку цветных стековых трасс и довольно распечатанный тестовый вывод), или добавив Whidbey вместо вашего списка плагинов Leiningen.

Образец Ultra REPL: enter image description here

17 голосов
/ 19 марта 2010

Я не знаю ни одного способа, чтобы базовый REPL Clojure, запускаемый чем-то вроде java -cp clojure.jar clojure.main, делал подсветку синтаксиса. Однако, если вы используете Emacs & SLIME (среда разработки, которую выбирает большая часть сообщества Clojure!), Вы можете использовать синтаксис подсветки SLIME REPL, как clojure-mode делает.

Во-первых, вам нужно поднять некоторый код из функции clojure-mode (определенной в верхней части 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))))

Затем добавьте его к 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à, при следующем подключении к SLIME REPL будет доступна подсветка синтаксиса clojure-mode. Если вы используете SLIME и для Common Lisp, вам нужно настроить его так, чтобы он не пытался делать подсветку Clojure с помощью CL. Кроме того, это только первое приближение; одна из разновидностей прерываний - подсвечивание подсказки (вещь namespace> больше не будет подсвечиваться). Хотя я не опытный font-lock хакер, если уж на то пошло воображение, поэтому я оставлю это на этом. : -)

9 голосов
/ 13 мая 2013

Если вы просто хотите раскрасить подсказку и используете Leiningen (что вам нужно), вы можете использовать :repl-options и escape-последовательности ANSI :

:repl-options {:prompt (fn [ns]
                         (str "\033[1;32m"
                              ns "=>"
                              "\033[0m "))}

Ссылки:

5 голосов
/ 30 сентября 2011
  • Установить Emacs 24
  • Установка Emacs Starter Kit v2
  • M-x package-install -> starter-kit-lisp
  • Добавить к init.el: (add-hook 'slime-repl-mode-hook 'clojure-mode-font-lock-setup)
  • Установка Swank для Clojure
  • Откройте ваш проект Clojure и M-x clojure-jack-in

Emacs REPL

2 голосов
/ 09 июня 2014

CIDER пользователи могут получить цветной REPL, добавив в свою конфигурацию следующее:

(setq cider-repl-use-clojure-font-lock t)
2 голосов
/ 25 июля 2012

Попробуйте Light Table Playground от Криса Грейнджера.Это первая часть более амбициозной многоязыковой IDE.

Имеет цветной реплик Clojure, который выполняет оценки в реальном времени и отображает целые блоки кода.granger.com/lighttable/

Вы можете увидеть более высокий уровень представления проекта здесь:

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

2 голосов
/ 19 марта 2010

Некоторые раскраски имеют REPL в VimClojure.

1 голос
/ 05 февраля 2015

Если вы являетесь пользователем Intellij, отличный Cursive является отличным выбором и предоставляет красивые цвета, которые вы можете настроить:

enter image description here

1 голос
/ 14 июля 2011

Затмение Против часовой стрелки REPL обеспечивает полную раскраску синтаксиса (включая раскраску радужной скобки).

Я думаю, он использует nREPL под капотом.

0 голосов
/ 05 февраля 2015

Вы можете попробовать LightTable, он позволяет выбирать функции и запускать мгновенно.

...