Mac 上 xwidget-webkit-estimated-load-progress 未定义

@oldosfan 大佬,咨询下这个问题,在 mac 上使用xwidget会抛出来这个方法不存在

Error during redisplay: (eval (when xwidget-webkit--loading-p (let ((session (xwidget-webkit-current-session))) (format " [%d%%%%]" (* 100 (xwidget-webkit-estimated-load-progress session)))))) signaled (void-function xwidget-webkit-estimated-load-progress) [6 times]

看了下是这里抛出来的:

(define-derived-mode xwidget-webkit-mode special-mode "xwidget-webkit"
  "Xwidget webkit view mode."
  (setq buffer-read-only t)
  (add-hook 'kill-buffer-hook #'xwidget-webkit-buffer-kill)
  (setq-local tool-bar-map xwidget-webkit-tool-bar-map)
  (setq-local bookmark-make-record-function
              #'xwidget-webkit-bookmark-make-record)
  (setq-local header-line-format
              (list "WebKit: "
                    '(:eval
                      (xwidget-webkit-title (xwidget-webkit-current-session)))
                    '(:eval
                      (when xwidget-webkit--loading-p
                        (let ((session (xwidget-webkit-current-session)))
                          (format " [%d%%%%]"
                                  (* 100
                                     (xwidget-webkit-estimated-load-progress
                                      session))))))))
  ;; Keep track of [vh]scroll when switching buffers
  (image-mode-setup-winprops))

但是看着这个方法在 xwidget.c 文件里是有个 if 判断吗,所以才没有给 mac 上注册:

#ifdef USE_GTK
  defsubr (&Sxwidget_webkit_load_html);
  defsubr (&Sxwidget_webkit_back_forward_list);
  defsubr (&Sxwidget_webkit_estimated_load_progress);
#endif

你用的Emacs29?28好像没有这个函数。

是的,编译的主干

Mac 上不支持 xwidget-webkit-estimated-load-process。

但是在mac上 xwidget.el 这里也调用了这个方法,是不是需要兼容? 直接 override 把它删了没影响吧

目前还在等待志愿者在 mac 上实现 xwidget-webkit-estimated-load-progress 等新功能,实现之前 xwidget 不能在 mac 上正常运行。

哦哦,明白了