目的:
通过全局设置文件覆盖程序包脚本中的值(无需编辑程序包脚本)
环境:
详细信息:
我想在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
)做同样的事情。有什么好办法吗?
答案 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
文件中。