meow insert 模式下禁用 flymake (eglot)

用 neovim 时发现其在 insert 模式下会有选择地触发错误提示,体验比较舒服,就想用 emacs 实现差不多的效果:

(setq flymake-no-changes-timeout nil)
(defun my/flymake ()
    (add-hook 'meow-insert-exit-hook
      (lambda ()
        (flymake-mode 1)
        (setq-local eglot-send-changes-idle-time 0.3)) nil t)
    (add-hook 'meow-insert-enter-hook
      (lambda ()
        (flymake-mode -1)
        (setq-local eglot-send-changes-idle-time 0)) nil t))

理想中应该是考虑几种 insert 模式下应该触发检查的情况。 此外,不清楚 eglot-send-changes-idle-time 为 0 会不会有什么性能问题,如果可以在特定的时机立即 send-changes 也许更好,可惜 eglot 的代码看的不是很明白。

编辑时就不应该触发检查,或者控制较长时间,我用这个:(setq flymake-no-changes-timeout nil).

1 个赞