spacemacs在emacs30上安装后,helm-find-files弹出文件列表后,选中文件回车报错,无法打开文件

使用helm,在helm的minibuffer中弹出的文件列表中,选某一个回车并没有打开文件,而是报错: cl–assertion-failed: No such action ‘#[(candidate) ((let* ((files (helm-marked-candidates)) (buffers (mapcar 'find-file-noselect files))) (spacemacs//helm-open-buffers-in-windows buffers))) nil]’ for this source [3 times]

测试发现各个弹出helm mini buffer,并在mini buffer中选择的功能,回车都报错无法打开文件 debug信息:

Debugger entered–Lisp error: (error “Cannot make side window the only window”) error(“Cannot make side window the only window”) (cond ((and window-already-maximal (window-parameter nil 'spacemacs-max-state-writable)) (let ((selected-win-state (window-state-get (selected-window)))) (window-state-put (or (window-parameter nil 'spacemacs-max-state) (window-parameter nil 'spacemacs-max-state-writable)) (selected-window)) (window-state-put selected-win-state (selected-window)) (set-window-parameter nil 'spacemacs-max-state nil) (set-window-parameter nil 'spacemacs-max-state-writable nil))) ((and (not window-already-maximal) (window-parameter nil ‘window-side)) (error “Cannot make side window the only window”)) ((not window-already-maximal) (walk-windows #’(lambda (win) (set-window-parameter win 'spacemacs-max-state nil) (set-window-parameter win 'spacemacs-max-state-writable nil))) (set-window-parameter nil 'spacemacs-max-state (window-state-get max-target-window)) (set-window-parameter nil 'spacemacs-max-state-writable (window-state-get max-target-window t)) (if dotspacemacs-maximize-window-keep-side-windows (spacemacs//delete-other-non-side-windows) (let ((ignore-window-parameters t)) (delete-other-windows))))) (let* ((max-target-window (if dotspacemacs-maximize-window-keep-side-windows (window-main-window) (frame-root-window))) (window-already-maximal (eq max-target-window (selected-window)))) (cond ((and window-already-maximal (window-parameter nil 'spacemacs-max-state-writable)) (let ((selected-win-state (window-state-get (selected-window)))) (window-state-put (or (window-parameter nil 'spacemacs-max-state) (window-parameter nil 'spacemacs-max-state-writable)) (selected-window)) (window-state-put selected-win-state (selected-window)) (set-window-parameter nil 'spacemacs-max-state nil) (set-window-parameter nil 'spacemacs-max-state-writable nil))) ((and (not window-already-maximal) (window-parameter nil ‘window-side)) (error “Cannot make side window the only window”)) ((not window-already-maximal) (walk-windows #’(lambda (win) (set-window-parameter win 'spacemacs-max-state nil) (set-window-parameter win 'spacemacs-max-state-writable nil))) (set-window-parameter nil 'spacemacs-max-state (window-state-get max-target-window)) (set-window-parameter nil ‘spacemacs-max-state-writable (window-state-get max-target-window t)) (if dotspacemacs-maximize-window-keep-side-windows (spacemacs//delete-other-non-side-windows) (let ((ignore-window-parameters t)) (delete-other-windows)))))) spacemacs/toggle-maximize-window() funcall-interactively(spacemacs/toggle-maximize-window) command-execute(spacemacs/toggle-maximize-window) recursive-edit() debug(error (cl-assertion-failed ((or (eq action actions) (byte-code-function-p action) (helm-subr-native-elisp-p action) (and (listp action) (functionp action)) (rassq action actions)) "No such action %s' for this source"))) cl--assertion-failed((or (eq action actions) (byte-code-function-p action) (helm-subr-native-elisp-p action) (and (listp action) (functionp action)) (rassq action actions)) "No such action %s’ for this source" nil (#f(lambda (candidate) :dynbind (let* ((files (helm-marked-candidates)) (buffers (mapcar 'find-file-noselect files))) (spacemacs//helm-open-buffers-in-windows buffers))))) helm-exit-and-execute-action(#f(lambda (candidate) :dynbind (let* ((files (helm-marked-candidates)) (buffers (mapcar 'find-file-noselect files))) (spacemacs//helm-open-buffers-in-windows buffers)))) spacemacs/helm-find-files-windows() funcall-interactively(spacemacs/helm-find-files-windows) command-execute(spacemacs/helm-find-files-windows) helm-read-from-minibuffer("Find files or url: " “/home/liweigao/” nil nil nil nil nil) helm-internal(helm-source-find-files “/home/liweigao/” "Find files or url: " nil nil “helm find files” nil nil nil) helm(helm-source-find-files “/home/liweigao/” “Find files or url: " nil nil “helm find files” nil nil nil) helm(:sources helm-source-find-files :input “/home/liweigao/” :case-fold-search smart :preselect nil :ff-transformer-show-only-basename t :default nil :prompt “Find files or url: " :buffer “helm find files”) helm-find-files-1(”/home/liweigao/”) (let* ((hist (and arg helm-ff-history (helm-find-files-history nil))) (default-input hist) (input (cond ((and (eq major-mode 'dired-mode) default-input) (file-name-directory default-input)) ((and (not (string= default-input “”)) default-input)) (t (expand-file-name (helm-current-directory)))))) (set-text-properties 0 (length input) nil input) (helm-find-files-1 input)) spacemacs/helm-find-files(nil) funcall-interactively(spacemacs/helm-find-files nil) command-execute(spacemacs/helm-find-files) lazy-helm/spacemacs/helm-find-files() funcall-interactively(lazy-helm/spacemacs/helm-find-files) command-execute(lazy-helm/spacemacs/helm-find-files)

经过自己一周的摸索,最终找到了一个解决办法:卸载从ubuntu24的应用市场下载的gnu emacs,然后从emacs官网下载emacs30.1的源码,在本地编译安装,就能解决这个问题。这应该是个应用市场新版本emacs和helm的一个兼容性问题,具体根因不知道是啥,是个共性问题