Mac下的Emacs启动时会卡住


#1

我在Mac下启动Emacs会卡住一直没法启动, 除非这时候我三指向上启动工作区才会触发Emacs GUI窗口启动.

下面命令行可以重现:

open -a Emacs

已经测试过带配置文件或者 emacs -Q 的情况, 都是无法启动.

如果Mac下有哪位朋友已经有解决方案, 还请指点下, 谢谢.


#2

大佬,我這裏從命令行啓動還是別的啓動方法都沒有問題哦,

open -a Emacs

Emacs 版本:

GNU Emacs 26.1 (build 1, x86_64-apple-darwin14.5.0, NS appkit-1348.17 Version 10.10.5 (Build 14F2511)) of 2018-05-31

macos 版本:

macOS Mojave 10.14.2

試試重裝 Emacs?


#3

emacs-mac

macos 10.14

没问题 但是使用过程中有偶尔卡死现象


#4

请问是用的 Emacs 26.1 with Mojave 吗? 这是个已知 bug, 主分支上已经修复了, 讨论见此

Emacs rendering is broken in MacOS Mojave

如果确实是这个问题引起的,解决方法也很简单, Reddit 讨论里给出了两种办法, 我提供另外一种 (对于 Homebrew 用户):

$ brew edit emacs

修改 head 到 emacs-26 分支上,

diff --git a/Formula/emacs.rb b/Formula/emacs.rb
index 1305daf..807bbe5 100644
--- a/Formula/emacs.rb
+++ b/Formula/emacs.rb
@@ -14,7 +14,7 @@ class Emacs < Formula
   end

   head do
-    url "https://github.com/emacs-mirror/emacs.git"
+    url "https://github.com/emacs-mirror/emacs.git", :branch => "emacs-26"

     depends_on "autoconf" => :build
     depends_on "gnu-sed" => :build
brew install emacs --with-cocoa --HEAD

#5

我是自己源码编译的,我回来更新一下git试一下吧。

感觉是mac升级后出问题了


#6

我自己编译的和 macos port 都没有问题,很顺畅,启动2秒内


#7

怎么这么快,我的emacs一般要十来秒


#8

试试我的配置: Centaur Emacs。


#9

是这个吧?https://github.com/seagle0128/.emacs.d 已经加星了,我抽时间看看


#10

是的,试试看不会让你失望的


#11

直接分析你的代码的话,得花一些时间,能简单解释一些,你的快速启动是基于什么吗?lazy?我搜索什么关键字,方便分析代码?


#12

我去,简直是膜拜呀,你的是框架级的配置,我的配置弱爆了。不过我还得花些时间熟悉一下。


#13

写的很清楚,又不像spacemacs那么复杂


#14

你是说分析代码吗?我才从Vim转过来两个多月,所以,需要花些时间,好在我有一些lisp的基础。


#15

主要利用了use-package,lazy loading,还有另外一些优化。尽量做到简洁快速,在性能和功能间达到一个平衡。


#16

目前使用 Mac os 14, Emacs Mac Port 7.2,Spacemacs develop,在使用 treemacs 或者 (c-x, c-f) 打开 python 文件时会出现卡死情况。

使用 emacs -Q 打开文件没有问题。。


#17

我源码编译了十几个版本都是会在启动的时候卡住了, 感觉Mac mojave的图形绘制API变了, 导致Emacs启动的时候总是崩溃.

最后在 https://emacsformacosx.com/builds 下载了26.1.92 的版本解决了问题, 直接启动, 不会崩溃了. 感觉开发者在 Emacs 26 针对Mac的优化的补丁并没有合并到 master 分支 (没有深入研究)

从Emacs Git切换到 Emacs 26.1.92 后, 同时按 Option 和 Command 的时候, Emacs 26 会认为是 Super + Alt + Shift + key, 折腾了一下, 先去掉 Karabiner 中 Option 和 Command 按键的交换, 然后在配置中写入以下代码, 搞定:

;; Mac平台下交换 Option 和 Command 键。
(when (featurep 'cocoa)
  (setq mac-option-modifier 'super)
  (setq mac-command-modifier 'meta))

#18

再学 doom emacs 那样预先编译一下或许会更快


#19

试过了,提高不明显,还可能带来副作用。