【问题标题】:How do I live code in Clojure using Emacs / nrepl / Quil?如何使用 Emacs/nrepl/Quil 在 Clojure 中编写代码?
【发布时间】:2013-02-18 05:46:57
【问题描述】:

我有一个相当标准的 Quil 文件,我正在使用 Emacs 和 nrepl 进行编辑。

(defn setup []
  (qc/smooth)
  (qc/frame-rate 24)
  (qc/background 200))

(defn draw []
  (draw-world))

(qc/defsketch run
  :title "Circles!"
  :setup setup
  :draw draw
  :size [800 600]
  :renderer :opengl)

首先,我使用C-c C-l 来加载文件;这将创建一个草图窗口。然后我编辑我的draw-world 函数,比如用不同的颜色绘制。我的问题是:

如何使用这个新功能更新当前的 Quil 窗口?

*C-x C-e 似乎不起作用。

【问题讨论】:

    标签: clojure quil nrepl


    【解决方案1】:

    在您要更改的函数中尝试 C-M-x(这会评估当前的顶级表单)或在源缓冲区中尝试 C-c C-k(这会评估当前缓冲区) .顺便说一句,C-x C-e 也应该可以工作(它当然对我有用,但我很少使用它)。也许你没有使用 nrepl.el 的最新版本?

    【讨论】:

    • 可悲的是,当我运行它们时,所有这些似乎都创建了一个新窗口。 (我使用的是最新的 Github nrepl.el。)
    • 我猜你的配置有问题,因为它们都适合我。
    • 这是正确的答案,我的代码中的错误似乎阻止了事情正常工作。谢谢!
    【解决方案2】:

    我刚刚设置了一个示例项目来处理我在 Quil 中进行实时编码的工作流程。我从几个地方复制了一些基础知识,例如 Quil wiki 和论坛。

    如果您查看项目的基本 core.clj 文件,您会发现它需要单独的“draw”和“setup”命名空间:

    (ns basic-metronome.core
      (:use [basic-metronome.setup :only [HEIGHT WIDTH]])
      (:require [basic-metronome.draw :as dynamic-draw]
                [basic-metronome.setup :as dynamic-setup]
                [quil.core :as qc]))
    
    (defn run-sketch []
      (qc/defsketch the-sketch
        :title "Hello Metronome"
        :setup dynamic-setup/setup
        :draw dynamic-draw/draw
        :size [WIDTH HEIGHT]))
    

    来自: https://github.com/mudphone/basic_quil_metronome/blob/master/src/basic_metronome/core.clj

    通过这种方式,我可以重新评估 C-c C-k draw.clj 文件,而无需重新评估顶级核心命名空间(这可能会导致问题,例如您描述的在哪里看到新窗口)。

    【讨论】:

    • 很高兴听到这个消息。它使实时编码对我来说变得更加简单。
    猜你喜欢
    • 2013-08-15
    • 2015-04-05
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多