Emacs Mac Port 可以用 Native Comp 了

brew tap railwaycat/emacsmacport
brew install emacs-mac --with-mac-metal --with-rsvg --with-starter --with-native-comp --HEAD

需要手动加下 symbolic link

ln -s $(brew --prefix)/opt/emacs-mac/Emacs.app /Applications
ln -s $(brew --prefix)/opt/emacs-mac/lib/emacs/28.0.92/native-lisp /Applications/Emacs.app/Contents/native-lisp

5 个赞

感谢 @willbchang 对于 emacs-28.0.92 及时给出了修正.

下面是我个人的一些经验:

根据 issue #274 的提示, emacs-mac-app-devel 与 homebrew-emacsmacport 均来自于 emac-mac, 并由两位不同的开发者分别在 Mac Ports 和 Homebrew 上进行维护.

Mac Ports 版本相较而言更新似乎更加频繁. 昨天试用了 Mac Ports 的版本, 运行稳定, 默认开启了 Native Comp, 并且不需要手动添加 symbolic link (它会直接安装一个 EmacsMac.app 到你的 /Applications 目录).

如果有朋友安装 Homebrew 的版本时有遇到困难, 或许可以试试这一个.

1 个赞

感谢分享 :grinning_face_with_smiling_eyes:

这个版本和官方版本比,有什么好的地方吗,以前跟着用过,后来就切到官方版本了,没感觉到有什么地方有问题

这个版本是 Emacs 22 时代的 Carbon Emacs,用以前的 Carbon API 实现,而官方版用现代的 Cocoa 实现。

2 个赞

emacs-mac 个人使用体验下来:

  1. 系统自带的中文输入法通过方向键左右移动的时候有光标
  2. 自带输入法切换,便于使用 GitHub - laishulu/emacs-smart-input-source: Less manual switch for native or OS input source (input method).
  3. Apple 原生的 Emoji 显示(刚刚更新的 28.0.92 有 bug 显示不了)
  4. Emacs 启动后居中屏幕
  5. 三指查询单词
  6. org mode 显示的图片清晰度高
  7. 像素级滚动(已被 @oldosfan 大神在 emacs 29 实现)
  8. Metal support (这个不太了解,也没啥感觉)
4 个赞

性能要求不高的话,官版的就可以了。我一直是用master分支编译,lsp之类的用得少点,不用native comp,没感觉到卡。

28.0.92 显示 Emoji 那个 bug 能报告一下吗?

我个人而言, 平常用 Emacs 写的代码不多, 主要是用来写学术笔记, 需要用到大量的 org-latex-preview. emacs-mac 修正了 LaTeX 公式在 Retina 屏幕显示模糊的问题. 阅读起来十分舒适.

2 个赞

谢谢,有空的时候我研究下怎么报 bug

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=54441

1 个赞

这个这么清晰是怎么配置的?

使用 emacs-mac + dvisvgm

(setq org-preview-latex-default-proces 'dvisvgm)

注意默认的 dvisvgm 配置可能会导致有些公式显示不完整, 你需要微调下下面的变量:

(setq org-preview-latex-process-alist ;; Set `dvisvgm' with --exact option
        '((dvisvgm
           :programs ("latex" "dvisvgm")
           :description "dvi > svg"
           :message "you need to install the programs: latex and dvisvgm."
           :image-input-type "dvi"
           :image-output-type "svg"
           :image-size-adjust (1.7 . 1.5)
           :latex-compiler
           ("latex -interaction nonstopmode -shell-escape -output-format dvi -output-directory %o %f")
           :image-converter ("dvisvgm %f -e -n -b %B -c %S -o %O")))) ;; 往这里加个 -e

参考: org-latex-fragment gets cutoff

1 个赞

谢谢 字数补丁

基于 https://debbugs.gnu.org/cgi/bugreport.cgi?bug=54441 的讨论

Emacs Mac Port 28.0.92 不能正常显示 Emoji 的问题可以通过下面的代码来解决

(set-fontset-font t '(#x1f000 . #x1faff) (font-spec :family "Apple Color Emoji"))
;; 或者下面这行 
;; (set-fontset-font t 'emoji '("Apple Color Emoji" . "iso10646-1") nil 'prepend)
1 个赞

发现 emacs-mac work 分支 i.e. homebrew-emacsmacport --HEAD 已经完成 28.1 更新.

测试后 homebrew-emacsmacport 28.1 运行顺利.

News

自 2022.04.06, native-lisp 软连接已经已经不需要手动添加.

到这一步软件已经安装完成可以正常运作.

2 个赞

mac port 下编译native comp是否还需要 brew edit gcc, 在 languages 里加上 jit?

已经不需要了,直接装emacs-mac的时候添加一个 with-native-comp 选项即可

1 个赞

编译中的native-comp --HEAD 中的HEAD 是什么?

当我用下面的编译命令的时候出现:Error: invalid option: --with-rsvg 这是什么原因?

brew tap railwaycat/emacsmacport

brew install emacs-mac --with-mac-metal --with-rsvg --with-starter --with-native-comp --HEAD