Macbook Pro M1 配置全新的开发环境,启动时间从2s减少到1s了,爽

记录了自己折腾M1的过程,中间踩了一些坑,通过本论坛和google都找到了解决方案,希望对想换M1的同学有一些帮助。

我的配置文件:https://github.com/zilongshanren/emacs.d

目前一共是138个packages。

这个配置基本包含了我之前使用 spacemacs 和 doom-emacs 时的90%的功能,剩下10%的功能平时主要可能是不经常使用,以后可能还会添加。

还是从头折腾配置舒服,代码少,启动贼快。

11 个赞

emacs-rime 找不到头文件的 bug 已经修复了,现在在 macOS 上怎么安装 Emacs 应该不影响了。

我是自己编译的 Emacs 29,头文件集成到了/Applications/Emacs.app/Contents/Resources/src 下面

貌似我还是会呀。。 不知道是不是哪里姿势不对。。

emacs-rime 是靠下面这个函数去探测头文件位置:

(defun rime--guess-emacs-module-header-root ()
  "Guess `emacs-module-module-header-root' from some known places."
  (or
   (let ((module-header (expand-file-name "emacs-module.h" (concat source-directory "/src/"))))
     (when (file-exists-p module-header)
       (file-name-directory module-header)))
   (let* ((emacs-dir (getenv "emacs_dir")) ;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Misc-Variables.html
          (header-file (expand-file-name "emacs-module.h" (concat emacs-dir "/include/"))))
     (when (and emacs-dir (file-exists-p header-file))
       (file-name-directory header-file)))))

你看下你 Emacs 中的 source-directory 变量是指定到哪个文件夹,下面的 src 目录是否有动态模块的头文件。如果没有的话,只能在配置中直接设置 rime-emacs-module-header-root变量,指定头文件的位置了。

自己编译emacs啊。在macOS上,一直都是编译最新的版本。

想偷懒来着,发现不行

source-directory是 /private/tmp/emacs-mac-20220608-17039-1650fmm/mituharu-emacs-mac-3ff676c2f98c/ 这个是个临时的目录,貌似不行。

macbook air m2 要出来了……跑题一下

要想跑得快,先要负重小 :rofl:

看来 emac-mac 没有将头文件链接到标准的目录。

不过 M1 上编译 Emacs 很快,听说最快的 5 分钟就编译完成 native-comp (开启NATIVE_FULL_AOT=1 的情况下)

m1 pro和m1 max比m2强。不必担心。

嗯嗯,native comp回头试试

在m1上,感觉无论native开不开,运行速度上都没啥区别,不管是eglot补全或者其他地方的响应都感知不明显。我用的emacs-plus29,也试过自己编译的版本,用起来没啥区别,后来就关了native

我现在编译不开native comp选项,速度没什么区别。

有图有真相,M1上确实快。用的gccemacs 28.1,用了tree-sitter,company+ lsp-mode补全都很快。

哇,你这个真的很快,我试过开了native,启动时间相比正常会慢不少。可你这也太快了哈哈哈

启用native-comp启动会稍慢,优化后差别不大。日常使用来看,平均就是1s左右(0.8-1.2s浮动),冷启动稍慢。

native-comp 并不会加快启动时间,主要是影响 lsp。

如果机器性能较好,而且项目本身也不大的话,在 Emacs 28.1 以上,开不开 native-comp,都感觉不出来的。

146个包,启动0.6左右。M1 体验最好的是续行太好了。

可以试试用idle-timer加载color-theme. 另外关闭menu bar也可用同样的timer.

(defun my-mini-ui ()
  "Minimum ui."
  ;; NO tool bar, scroll-bar
  (when window-system
    (scroll-bar-mode -1)
    (tool-bar-mode -1)
    (horizontal-scroll-bar-mode -1)))
(run-with-idle-timer 2 nil #'my-mini-ui)

配置优化后,这两个就占了启动时间大头了。

我10年的老电脑Linux启动0.57秒,最新的m1启动0.54秒,都是emacs28开了native compilation,接近300个包。

5 个赞