Как запустить код в Clojure с помощью Emacs/nrepl/Qil?

У меня есть довольно стандартный файл 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 не работает.


person sdasdadas    schedule 18.02.2013    source источник


Ответы (2)


Попробуйте C-M-x (это оценивает текущую форму верхнего уровня) в функции, которую вы хотите изменить, или C-c C-k (это оценивает текущий буфер) в исходном буфере. Кстати, C-x C-e тоже должен работать (у меня он, конечно, работает, но я им редко пользуюсь). Может быть, вы не используете последнюю версию nrepl.el?

person Bozhidar Batsov    schedule 18.02.2013
comment
К сожалению, все они, кажется, создают новое окно, когда я их запускаю. (Я использую последнюю версию Github nrepl.el.) - person sdasdadas; 19.02.2013
comment
Я предполагаю, что что-то неправильно настроено на вашей стороне, так как у меня все работает нормально. - person Bozhidar Batsov; 19.02.2013
comment
Это был правильный ответ, и ошибка в моем коде, казалось, мешала правильной работе. Спасибо! - person sdasdadas; 19.02.2013

Я только что создал пример проекта для обработки моего рабочего процесса живого кодирования в Quil. Я скопировал некоторые основы из нескольких мест, таких как вики Quil и форумы.

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

person mudphone    schedule 24.05.2013
comment
Рад слышать это. Это сделало живое кодирование намного проще для меня. - person mudphone; 25.05.2013