首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在咖啡模式下覆盖前奏模块钩子?

如何在咖啡模式下覆盖前奏模块钩子?
EN

Stack Overflow用户
提问于 2014-05-15 13:24:38
回答 1查看 351关注 0票数 2

我已经使用前奏曲大约一年,并开发了一个很好的设置。我开始写咖啡脚本,并尝试使用前奏-咖啡模块。这包括以下内容:

代码语言:javascript
复制
(setq coffee-command "~/dev/coffee")

这在我的机器上是不正确的。我想把它改为:

代码语言:javascript
复制
(setq coffee-command "coffee")

显然,我可以简单地修改这一行并完成它,但是我喜欢将所有的更改都保存在personal文件夹中,以便方便地在所有机器上更新和保持我的dotfile同步。

我试图以下列方式覆盖它:

代码语言:javascript
复制
(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文件,以确保完整性:

代码语言:javascript
复制
(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)

总之,我如何覆盖咖啡模式钩子上正在发生的事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-15 13:48:38

哦,天哪,太可怕了。我会用前奏曲提出一个问题。至少在设置coffee-command之前,它应该检查是否存在。

这条线很近

代码语言:javascript
复制
(add-hook 'prelude-coffee-mode-hook (setq coffee-command "coffee"))

试试这个:

代码语言:javascript
复制
(add-hook 'prelude-coffee-mode-hook (lambda () (setq coffee-command "coffee")))

我发现了prelude-coffee.el的其他问题

您不能在钩子上使用setq,只需清除所有以前添加的钩子。太不文明了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23679603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档