遇到奇怪的 recursive edit 错误

应该有个权威

你的两个版本代码我都试了, 没有解决我的问题。

原因还是, 我不会在 eaf-monitor-key-event 里面读取用户输入, 只会转发事件, 而且你的代码当用户按回车的时候那行匹配没用, 因为问题出在直接按 Ctrl + G了

结论还是我上面说的, 问题真的不是出在 read-string 上面了, 而是 pre-command-hook 遇到 recursive edit 导致错误了 (原因未知)

你没有理解我的问题, 但是还是非常感谢你花了这么多时间帮助我。

你没有看到我图片上的 No recursive edit is in progress

你加个condition-case在read-string看看

我看了, 但是你要在Linux下运行起来, 才能重现我说的 recusive edit 问题。

因为你没有运行起来 eaf , 所以你没有重现我最开始说的问题, 你直接把 eaf-monitor-key-event 里面的 eaf-call 都换成 message 以后, 就丢失了测试环境。

导致你的代码确实没有解决我的问题。 :sob:

你转发事件 python分析事件 通过dbus通知emacs 我想要一个页码

页码于是就调用 read-string 这个时候quit出现了 至于接下来会发生什么我也不知道

欺负我没有GUI

是的, 但是 read-string 是在 eaf-monitor-key-event 读取的, 不是在 eaf-monitor-key-event 里面, eaf-monitor-key-event 外面调用 read-string 会把 pre-command-hook 搞挂是我没有想清楚的。

而且 eaf-monitor-key-event 里面如果发现有 RET 按键也是会转发给 python 进程的。

我明白你的解决方案, 如果在 eaf-monitor-key-event 里面 read-string , 很容易解决的。

算了吧, 主要是你没有重现我的问题, 但是还是非常感谢你。

我先用我的猥琐方法先用着, 被 pre-command-hook 删除以后强制再加上, 等我以后想到根本原因再用优雅的方案。

你不会是把ret真的发过去了吧

服了你

我是把所有能发的事件都转发给 pyqt , 要不你在 google 里面搜索的时候, 关键字打完, pyqt 那端不能按回车多尴尬啊?

你怎么不知道关键之所在

(defun eaf-input-message (buffer_id interactive_string callback_type)
  (let ((input-message))
    (setq input-message (condition-case nil (read-string interactive_string) (quit nil)))
    (when input-message
      (eaf-call "handle_input_message" buffer_id callback_type input-message)
      )))

如果我赢了 你就在贡献者中加上我的名字

这行代码只是容错性的,但是这行代码不是问题的关键。

这样写了还是会报错

没问题,但是我估计你要先装个archlibux

你试过了吗?

我git里面有arch docker的配置,如果你可以跑docker,应该很快可以测试

你这段代码确实解决了我的问题, 看来我的想法是错的, condition-case 包裹 read-string 确实有用, 但是我尝试的时候没有加 (quit nil) 这个 handler , 导致我试了 condition-case 方案没用后就放弃了。

你的这段代码已经被标记为为解决方案了。

我要 贡献者