Macos Sequoia 正式版升级后报错

Error running timer: (error "eglot--saved-initargs is already defined as something else than a generic function")
Error running timer: (cl-no-applicable-method initialize-instance #s(#s(eieio--class transient-suffix "Superclass for suffix command." (#s(eieio--class transient-child "Abstract superclass for group and suffix classes.

It is undefined what happens if more than one `if*' predicate
slot is non-nil." (#s(eieio--class eieio-default-superclass "Default parent class for classes with no specified parent class.
Its slots are automatically adopted by classes with no specified parents." (#s(built-in-class record "Abstract type of objects with slots." (#s(built-in-class atom "Abstract supertype of anything but cons cells." (#s(built-in-class t "Abstract supertype of everything." nil nil nil)) nil nil)) nil nil)) [] #s(hash-table test eq) (transient-child transient-prefix magit-section jsonrpc-connection auth-source-backend) nil [] [] #s(#6) (:custom-groups nil :documentation "Default parent class for classes with no specified parent class.
Its slots are automatically adopted by classes with no specified parents." :abstract t))) [#s(cl-slot-descriptor level (symbol-value 'transient--default-child-level) t ((:documentation . "Enable if level of prefix is equal or greater."))) #s(cl-slot-descriptor if nil t ((:documentation . "Enable if predicate returns non-nil."))) #s(cl-slot-descriptor if-not nil t ((:documentation . "Enable if predicate returns nil."))) #s(cl-slot-descriptor if-non-nil nil t ((:documentation . "Enable if variable's value is non-nil."))) #s(cl-slot-descriptor if-nil nil t ((:documentation . "Enable if variable's value is nil."))) #s(cl-slot-descriptor if-mode nil t ((:documentation . "Enable if major-mode matches value."))) #s(cl-slot-descriptor if-not-mode nil t ((:documentation . "Enable if major-mode does not match value."))) #s(cl-slot-descriptor if-derived nil t ((:documentation . "Enable if major-mode derives from value."))) #s(cl-slot-descriptor if-not-derived nil t ((:documentation . "Enable if major-mode does not derive from value."))) #s(cl-slot-descriptor inapt nil t nil) #s(cl-slot-descriptor inapt-face 'transient-inapt-suffix t nil) #s(cl-slot-descriptor inapt-if nil t ((:documentation . "Inapt if predicate returns non-nil."))) #s(cl-slot-descriptor inapt-if-not nil t ((:documentation . "Inapt if predicate returns nil."))) #s(cl-slot-descriptor inapt-if-non-nil nil t ((:documentation . "Inapt if variable's value is non-nil."))) #s(cl-slot-descriptor inapt-if-nil nil t ((:documentation . "Inapt if variable's value is nil."))) #s(cl-slot-descriptor inapt-if-mode nil t ((:documentation . "Inapt if major-mode matches value."))) #s(cl-slot-descriptor inapt-if-not-mode nil t ((:documentation . "Inapt if major-mode does not match value."))) #s(cl-slot-descriptor inapt-if-derived nil t ((:documentation . "Inapt if major-mode derives from value."))) #s(cl-slot-descriptor inapt-if-not-derived nil t ((:documentation . "Inapt if major-mode does not derive from value.")))] #s(hash-table test eq data (level 1 if 2 if-not 3 if-non-nil 4 if-nil 5 if-mode 6 if-not-mode 7 if-derived 8 if-not-derived 9 inapt 10 inapt-face 11 inapt-if 12 inapt-if-not 13 inapt-if-non-nil 14 inapt-if-nil 15 inapt-if-mode 16 inapt-if-not-mode 17 inapt-if-derived 18 inapt-if-not-derived 19)) (transient-group transient-suffix) ((:level . level) (:if . if) (:if-not . if-not) (:if-non-nil . if-non-nil) (:if-nil . if-nil) (:if-mode . if-mode) (:if-not-mode . if-not-mode) (:if-derived . if-derived) (:if-not-derived . if-not-derived) (:inapt-face . inapt-face) (:inapt-if . inapt-if) (:inapt-if-not . inapt-if-not) (:inapt-if-non-nil . inapt-if-non-nil) (:inapt-if-nil . inapt-if-nil) (:inapt-if-mode . inapt-if-mode) (:inapt-if-not-mode . inapt-if-not-mode) (:inapt-if-derived . inapt-if-derived) (:inapt-if-not-derived . inapt-if-not-derived)) [] [] #s(#4 1 nil nil nil nil nil nil nil nil nil transient-inapt-suffix nil nil nil nil nil nil nil nil) (:custom-groups nil :documentation "Abstract superclass for group and suffix classes.

It is undefined what happens if more than one `if*' predicate
slot is non-nil." :abstract t))) [#s(cl-slot-descriptor level (symbol-value 'transient--default-child-level) t ((:documentation . "Enable if level of prefix is equal or greater."))) #s(cl-slot-descriptor if nil t ((:documentation . "Enable if predicate returns non-nil."))) #s(cl-slot-descriptor if-not nil t ((:documentation . "Enable if predicate returns nil."))) #s(cl-slot-descriptor if-non-nil nil t ((:documentation . "Enable if variable's value is non-nil."))) #s(cl-slot-descriptor if-nil nil t ((:documentation . "Enable if variable's value is nil."))) #s(cl-slot-descriptor if-mode nil t ((:documentation . "Enable if major-mode matches value."))) #s(cl-slot-descriptor if-not-mode nil t ((:documentation . "Enable if major-mode does not match value."))) #s(cl-slot-descriptor if-derived nil t ((:documentation . "Enable if major-mode derives from value."))) #s(cl-slot-descriptor if-not-derived nil t ((:documentation . "Enable if major-mode does not derive from value."))) #s(cl-slot-descriptor inapt nil t nil) #s(cl-slot-descriptor inapt-face 'transient-inapt-suffix t nil) #s(cl-slot-descriptor inapt-if nil t ((:documentation . "Inapt if predicate returns non-nil."))) #s(cl-slot-descriptor inapt-if-not nil t ((:documentation . "Inapt if predicate returns nil."))) #s(cl-slot-descriptor inapt-if-non-nil nil t ((:documentation . "Inapt if variable's value is non-nil."))) #s(cl-slot-descriptor inapt-if-nil nil t ((:documentation . "Inapt if variable's value is nil."))) #s(cl-slot-descriptor inapt-if-mode nil t ((:documentation . "Inapt if major-mode matches value."))) #s(cl-slot-descriptor inapt-if-not-mode nil t ((:documentation . "Inapt if major-mode does not match value."))) #s(cl-slot-descriptor inapt-if-derived nil t ((:documentation . "Inapt if major-mode derives from value."))) #s(cl-slot-descriptor inapt-if-not-derived nil t ((:documentation . "Inapt if major-mode does not derive from value."))) #s(cl-slot-descriptor key 'eieio--unbound t nil) #s(cl-slot-descriptor command 'eieio--unbound t nil) #s(cl-slot-descriptor transient 'eieio--unbound t nil) #s(cl-slot-descriptor format " %k %d" t nil) #s(cl-slot-descriptor description nil t nil) #s(cl-slot-descriptor face nil t nil) #s(cl-slot-descriptor show-help nil t nil)] #s(hash-table test eq data (level 1 if 2 if-not 3 if-non-nil 4 if-nil 5 if-mode 6 if-not-mode 7 if-derived 8 if-not-derived 9 inapt 10 inapt-face 11 inapt-if 12 inapt-if-not 13 inapt-if-non-nil 14 inapt-if-nil 15 inapt-if-mode 16 inapt-if-not-mode 17 inapt-if-derived 18 inapt-if-not-derived 19 key 20 command 21 transient 22 format 23 description 24 face 25 show-help 26)) (transient-value-preset transient-infix transient-information) ((:level . level) (:if . if) (:if-not . if-not) (:if-non-nil . if-non-nil) (:if-nil . if-nil) (:if-mode . if-mode) (:if-not-mode . if-not-mode) (:if-derived . if-derived) (:if-not-derived . if-not-derived) (:inapt-face . inapt-face) (:inapt-if . inapt-if) (:inapt-if-not . inapt-if-not) (:inapt-if-non-nil . inapt-if-non-nil) (:inapt-if-nil . inapt-if-nil) (:inapt-if-mode . inapt-if-mode) (:inapt-if-not-mode . inapt-if-not-mode) (:inapt-if-derived . inapt-if-derived) (:inapt-if-not-derived . inapt-if-not-derived) (:key . key) (:command . command) (:transient . transient) (:format . format) (:description . description) (:face . face) (:show-help . show-help)) [#s(cl-slot-descriptor definition nil t nil)] [nil] #s(#2 1 nil nil nil nil nil nil nil nil nil transient-inapt-suffix nil nil nil nil nil nil nil nil eieio--unbound eieio--unbound eieio--unbound " %k %d" nil nil nil) (:custom-groups nil :documentation "Superclass for suffix command.")) 1 nil nil nil nil nil nil nil nil nil transient-inapt-suffix nil nil nil nil nil nil nil nil eieio--unbound eieio--unbound eieio--unbound " %k %d" nil nil nil) (:command transient-toggle-level-limit :description #[0 "	U\203\303\207
\203\304\305\306\304\307\310\311 \312\"\"\313\314#\"\207\315\207" [transient-default-level transient--max-level transient--all-levels-p "Always displaying all levels" format "Hide suffix %s" propertize "levels > %s" eieio-oref transient-prefix-object level face transient-higher-level "Show all suffix levels"] 8] :inapt-if #[0 "	U\207" [transient-default-level transient--max-level] 2] :transient t))
[yas] Prepared just-in-time loading of snippets successfully.

大家升级后是否遇到类似的问题?

调用 consult-ripgrep 的时候报错

cl-no-applicable-method: No applicable method: project-root, (vc Git "~/.emacs.d/") 

这个应该是系统升级删除了 exec-path 当中 emacs-lsp-booster 文件。所以导致的报错。

请问现在可以升级了吗? 我前两个星期在 tg 里也问过,但大佬你建议暂时不要 但好想尝试看看,不知道现在是时机了吗? :thinking:

我这里还是有点问题,其他也有人说没问题的,自行判断吧。

看起来还是不太稳定,那我再等等好了,感谢!

我之前升级的beta版刚开始也报错了,我后面重新编译安装了emacs,然后升级了所有的包后就没问题了。

我这里 gui 的 exec-path 有问题,默认的只有这么几个。

但是从终端 emacs 命令启动 gui 的时候 这个时候就是正常可用的。

app 的 info.plist 当中也是正常的。

就很奇怪。

我看了下我这边的exec-path是好的,你用了下面这种配置吗: (when (or (memq window-system '(mac ns x)) (unless (memq system-type '(ms-dos windows-nt)) (daemonp))) (use-package exec-path-from-shell :init (exec-path-from-shell-initialize) (exec-path-from-shell-copy-env “GITHUB_TOKEN”) ))

如果用了,那估计重新安装下emacs就行了

没有用这个配置,我抄了 @roife 的配置自己配置了 exec-path 就好了。

或者使用 GitHub - purcell/exec-path-from-shell: Make Emacs use the $PATH set up by the user's shell 也可以解决。

emacs-plus 在编译的时候会将用户当前环境的 PATH 硬编码写入 emacs 当中,这样的好处就是解决了 macOS 的 GUI app 不会读取 zshrc 里的环境变量,只会读取 zshenv 的问题。

但是问题就是一旦 mac 系统升级以后,系统内部的默认 PATH 发生了变动,那么在旧的版本系统里硬编码的 PATH 可能会和最新版的对应不上。所以重新编译 emacs-plus 即可。

exec-path-from-shell 我觉得没有必要用,它读取环境变量的方式是同步的,这样会显著的延缓启动速度 。与其使用这个,不如在终端里启动 daemon,这样 emacs 就会继承交互式 shell 里的环境变量,之后就只使用 emacsclient 打开 GUI 就好了。

2 个赞

是的,不过放在文件中手动读取的话,速度还是可以的。也可以放其他的一些变量。