Как переопределить перехват модуля прелюдии в режиме кофе?

Я пользуюсь прелюдией около года и разработал хорошую настройку. Я начал писать coffee-script и попытался использовать модуль prelude-coffee. Это содержит строку:

(setq coffee-command "~/dev/coffee")

что неверно на моей машине. Я хотел бы изменить это на:

(setq coffee-command "coffee")

Теперь, очевидно, я мог бы просто изменить эту строку и покончить с этим, но я хотел бы сохранить все свои изменения в personal папку, чтобы упростить обновление и синхронизировать мои точечные файлы на всех моих машинах.

Я попытался переопределить его следующими способами:

(setq coffee-mode "coffee")
(eval-after-load 'coffee-mode
  (setq coffee-command "coffee"))

(add-hook 'prelude-coffee-mode-hook (setq coffee-command "coffee"))
(add-hook 'coffee-mode-hook (setq coffee-command "coffee"))

но ничего из этого не работает. Изменение должно быть запущено после другого файла, который, кажется, запускается с eval-after-load,

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ Я воспроизведу prelude-coffee.el файл здесь, для полноты:

(require 'prelude-programming)

(eval-after-load 'coffee-mode
  '(progn
     (defun prelude-coffee-mode-defaults ()
       "coffee-mode-defaults"

       ;; CoffeeScript uses two spaces.
       (setq coffee-tab-width 2)

       ;; If you don't have js2-mode
       (setq coffee-js-mode 'javascript-mode)

       ;; If you don't want your compiled files to be wrapped
       (setq coffee-args-compile '("-c" "--bare"))

       ;; *Messages* spam
       (setq coffee-debug-mode t)

       ;; Emacs key binding
       (define-key coffee-mode-map [(meta r)] 'coffee-compile-buffer)

       ;; Riding edge.
       (setq coffee-command "~/dev/coffee")

       ;; Compile '.coffee' files on every save
       (and (buffer-file-name)
            (file-exists-p (buffer-file-name))
            (file-exists-p (coffee-compiled-file-name (buffer-file-name)))
            (coffee-cos-mode t)))

     (setq prelude-coffee-mode-hook 'prelude-coffee-mode-defaults)

     (add-hook 'coffee-mode-hook (lambda ()
                                   (run-hooks 'prelude-coffee-mode-hook)))))
(provide 'prelude-coffee)

Таким образом, как мне переопределить то, что происходит на перехватчике режима кофе?

1 ответ

Решение

О человек, это ужасно. Я бы подал вопрос с прелюдией. По крайней мере, он должен проверить наличие перед установкой coffee-command,

Эта линия близка

(add-hook 'prelude-coffee-mode-hook (setq coffee-command "coffee"))

Попробуй это:

(add-hook 'prelude-coffee-mode-hook (lambda () (setq coffee-command "coffee")))

Я нашел другие проблемы с prelude-coffee.el:

Вы не можете использовать setq на хуке и просто стереть все ранее добавленные хуки. Это нецивилизованно.

Другие вопросы по тегам