如何移除EMACS内置的package

如图,如何移除这种内置的(build-in)的package?

编译的时候 exclude 掉。

1 个赞

能描述具体一点吗大神,我是新手

./configure && make && make install 三步总该知道吧。 在运行 ./configure 的时候加合适的选项,具体有哪些选项可以用 ./configure --help 查看。

为什么要删?

说出你要删的 package 的名字。

如果你只是认为这些内置的 package 用不上、看着不爽,那就错了。把截图里的都删掉 Emacs 就没法用了。

如果你有某个内置 package 的更新版本,直接 require 就好了,没必要删除内置。桌面上干干净净一个图标都没有也是病,得治。

比如ede删掉

不建议删除任何内置的 pagkcage,除非不删除没法用:

  1. 找到一个内置函数,比如 find-file:

    M-x find-function RET find-file RET

  2. 查看内置函数的文件所在:

    M-x find-file RET

所有内置 package 都在这个路径下了。

其实这些只是用来参考的源代码,全部删了还是可以用的……所有的包在编译时都加载进 dump image 里面了。

参照这个主题,以及 Emacs Lisp Reference Manual 的 Building Emacs 部分。

并非只是参考作用,不信可以删掉试试:

⋊> emacs -nw --batch --eval "(if (require 'cl-lib) (message \"foo\"))"
foo
⋊> mv /HOMEBREW/emacs/HEAD-9746058/share/emacs/26.0.50/lisp/emacs-lisp{,.bak}
⋊> emacs -nw --batch --eval "(if (require 'cl-lib) (message \"foo\"))"
Cannot open load file: No such file or directory, cl-lib

dump image 只是当前内存的一个快照,换个环境就不能用了,不可能永远都从 dump image 启动,dump 的时候也不能保证所有的 package 在内存里。

其实并没有,只有部分preloaded的(subr.el,backquote.el,cl-preload.el)。其他的只是dump了一个loaddefs文件进去,实际用的时候再autoloads。