大家好,我具体问题是这样的: 我安装了cdlatex 包,但是默认的数学公式环境比较少,我想加一个进去。我知道可以在.emacs.d中设置。但是我想直接在cdlatex.el源文件中修改,问题是我如何才能让这个修改生效呢?要怎么编译呢? 我的环境是:ununtu 16.06 + emacs 27.0.50+texlive2018 谢谢大家。
(auto-compile-on-save-mode)
1 个赞
M-x eval-buffer
Emacs lisp 是运行在解释器上的,编译也只是编译到字节码。
1 个赞
直接修改源文件很容易会给将来造成麻烦:
- 包更新了怎么办?
- 包重新安装了怎么办?
- 出现 Bug 了是谁的问题?
要在当前的 Emacs 中生效的话,执行相应的顶层代码块即可。使用类似下面这样的命令:
C-x C-e
(eval-last-sexp
)C-M-x
(eval-defun
)M-x eval-buffer
注意如果修改的是 defvar
/ defcustom
的值,得用 C-M-x
(eval-defun
),其它的没有效果。
要在将来的 Emacs 中生效的话,可能什么也不用做,改完源文件重启就完了;也有可能需要生成一份新的 ELC 文件,这样的话可用 M-x byte-compile-file
。让 Emacs 生效并不要求一定得编译。
4 个赞
谢谢,不过好像找不到这个命令??
谢谢您,问题解决了。您前面讲的也很有道理。学到不少东西,多谢!!!
我没说清楚,装一个auto-compile
的包,每次保存就会自己编译。生效需要eval
,我没看清楚主要是为了生效。。。
1 个赞
可以自己 fork 一份,然后 quelpa 指定安装自己的 fork。包更新的话就 rebase 一下就好了。
1 个赞
M-x byte-compile-file
1 个赞
不要直接修改源代码文件,很多方式可以改变源代码的行为:
- 如果是变量,直接修改
- 如果是函数,用 advice
也不要轻易 fork 一个项目,除非:
- 做好了长期维护的准备
- 为了提交 pr,暂时 fork
- 你的 pr 不被上游接受,但是你又非常需要这些功能,只能自己维护了。 (但如果只是少量更改,我也建议放弃维护 fork,把改动放到配置文件里,这样就可以比较轻松获得上游更新)
7 个赞