【发布时间】:2014-05-15 13:24:38
【问题描述】:
我已经使用prelude 大约一年了,并且开发了一个不错的设置。我开始编写咖啡脚本并尝试使用prelude-coffee module。这包含以下行:
(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)
总之,我如何覆盖咖啡模式挂钩上发生的事情?
【问题讨论】:
-
不确定这是否是问题所在,但您的
eval-after-load引用不足。像(eval-after-load 'coffee-mode '(setq coffee-command "coffee"))一样写(setq之前的额外单引号)或者如果您的 Emacs 足够新,则使用with-eval-after-load。 -
@legoscia 谢谢。我试着像你说的那样引用它,但不幸的是这没有帮助,(感谢你告诉我应该怎么做)我也应该引用其他行吗?编辑:似乎引用其他行并没有真正做任何事情。
标签: emacs elisp emacs-prelude