代码之家  ›  专栏  ›  技术社区  ›  thnetos

clojure有彩色的repl吗?

  •  36
  • thnetos  · 技术社区  · 16 年前

    我想为clojure代码得到一个彩色的repl,类似于对ruby的irb。

    user.clj是否有提供repl自动着色的库或设置?

    IRB实例:

    alt text

    11 回复  |  直到 11 年前
        1
  •  16
  •   Michał Marczyk    16 年前

    我不知道用什么方法来获得基本的clojure repl java -cp clojure.jar clojure.main ,执行语法突出显示。但是,如果您使用emacs&slime(clojure社区很大一部分人选择的开发环境!),则可以使用slime repl highlight语法,如 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)))
    

    等一下,下次你连接到粘液复制器时 闭锁模式 语法突出显示可用。如果你也使用slime来实现普通的lisp,你需要对它进行调整,这样它就不会尝试用cl来进行clojure高亮显示了。而且,这只是一个初步的近似值;一个有点中断的地方是提示高亮显示(即 namespace> 事情将不再突出显示)。我不是一个熟练的 font-lock 不过,不管你怎么想,我还是不提了。-)

        2
  •  23
  •   Venantius    11 年前

    派对已经很晚了,但是你可以通过使用leiningen插件 Ultra (它还支持彩色堆栈跟踪和漂亮的打印测试输出),或者通过添加 Whidbey 你的莱宁根插件列表。

    样品ULTRA REPL: enter image description here

        3
  •  9
  •   Rory O'Kane Erce    11 年前

    如果您只想给提示上色,并且正在使用 Leiningen (你应该),你可以使用 :repl-options ANSI escape sequences :

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

    参考文献:

        4
  •  5
  •   Sridhar Ratnakumar    14 年前
    • 安装Emacs 24
    • 安装 Emacs Starter Kit v2
    • M-x package-install -gt; starter-kit-lisp
    • 添加到init.el: (add-hook 'slime-repl-mode-hook 'clojure-mode-font-lock-setup)
    • 安装 Swank for Clojure
    • 打开clojure项目并 M-x clojure-jack-in

    Emacs REPL

        5
  •  2
  •   Sergey Miryanov    16 年前

    一些颜色在Vimclojure中有REPL。

        6
  •  2
  •   dansalmo    13 年前

    试试克里斯·格兰杰的轻桌游乐场。这是更加雄心勃勃的多语言ide的第一部分。

    它有一个color clojure repl,它为整个代码块执行实时计算和显示。

    http://www.chris-granger.com/lighttable/

    您可以在此处看到项目的更高级别视图:

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

        7
  •  2
  •   Bozhidar Batsov    11 年前

    CIDER 用户可以通过在其配置中添加以下内容来获得彩色REPL:

    (setq cider-repl-use-clojure-font-lock t)
    
        8
  •  1
  •   mikera    14 年前

    日食 Counterclockwise REPL提供完整的语法着色(包括彩虹括号着色)。

    我相信它的用途 nREPL 在引擎盖下面。

        9
  •  1
  •   Conan    11 年前

    如果你是IntelliJ用户, Cursive 是一个不错的选择,并提供漂亮的颜色,您可以定制:

    enter image description here

        10
  •  0
  •   Vlad Bokov    11 年前

    要使repl输出着色,请尝试 repl-color

    enter image description here

        11
  •  0
  •   Vinoth Kumar Asaithambi    11 年前

    您可以尝试lighttable,它允许您选择函数并立即运行。