如何通过全局设置覆盖Emacs软件包设置(脚本)(不编辑软件包脚本)

时间:2018-09-03 07:41:58

标签: vue.js emacs spacemacs

目的:

通过全局设置文件覆盖程序包脚本中的值(无需编辑程序包脚本)

环境:

  • Emacs:Spacemacs
  • 包装:vue-mode(来自MELPA)

详细信息:

我想在vue组件文件的lang="pug"部分中使用yaajade模式而不是pug模式。我找到了一种将(:type template :name pug :mode pug-mode)上的(:type template :name pug :mode yajade-mode)重写为.emacs.d/elpa/vue-mode-xxxxxxxx.xx/vue-mode.elc的方法(不是在vue-mode.el文件上的方法)

但是我想通过全局设置文件(.spacemacs)做同样的事情。有什么好办法吗?

1 个答案:

答案 0 :(得分:2)

有问题的代码似乎是:

(defcustom vue-modes
  '((:type template :name nil :mode vue-html-mode)
    (:type template :name html :mode vue-html-mode)
    (:type template :name jade :mode jade-mode)
    (:type template :name pug :mode pug-mode)
    [...])
  "A list of vue component languages [...]"
  [...]
  :group 'vue)

(defcustom vue-modes告诉您变量vue-modes用户选项,因此您可以自定义它:

M-x customize-option RET vue-modes RET

您还可以通过 C-h v vue-modes RET

上的“自定义”链接到达此处

在自定义缓冲区中进行所需的更改,然后使用“应用并保存”按钮将更改保存到您的初始化文件(或您的 Ch v {{ 1}} RET (如果已设置)。


您还将在定制缓冲区中看到一个链接,以编辑custom-file组的所有用户选项(请注意代码中的vue)。您可以直接通过以下方式进行操作:

M-x :group 'vue RET customize-group RET

大量的Emacs库都有这样的自定义组,您通常无需查看代码就可以猜测/自动完成该操作。


  

我找到了一种将...重写为vue(而不是.emacs.d/elpa/vue-mode-xxxxxxxx.xx/vue-mode.elc文件上)的方法

您已经意识到,您可能不应该编辑这些文件,但是绝对不建议编辑字节编译的vue-mode.el文件。

默认情况下,Emacs更喜欢字节编译的文件(因为它们效率更高),但这是基于这样一个假设,即字节编译的.elc文件将保持与它们的{{ 1}}源。

使用 Mx .elc RET .el RET 启用该选项,然后进行任何更改到customize-option文件中,Emacs将优先于与其关联的字节编译但现在已经过时的load-prefer-newer文件(如果有)。另请参见 C-h i g .el RET

您还可以使用 Mx .elc RET (emacs)Lisp Libraries RET 重新编译修改后的.el文件(以及其他方法),这样您对byte-compile-file文件所做的更改就会传播到已编译的/path/to/file.el文件中。