post-command-hook 实现起来简单,如果不存在探测不及时的问题的话,我觉得应该优先考虑。至于性能,一般没问题
目前用下来感觉探测的还是挺准确和实时的,暂时还没发现问题。有待继续观察
这是什么机制,能显示数字吗
这个小点就是一个背景为绿色的posframe
参考 pyim-indicator-with-posframe
确实有探测不到的情况,在切换buffer后,由于没执行任何命令,不会触发颜色更新,得动一下光标才能更新。有什么方法可以在刚切换完buffer的时候,让我执行一次指定的命令吗?
PS: 这个问题是 consult 引入的问题。
可以用window-buffer-change-functions
试试。
这个变量是怎么使用的?我把函数名加入这个变量,没看到有触发。
下面的代码我在Linux上测试是能触发test函数的。
(defun test-window-buffer-change (&optional arg)
(message "arg %S" arg)
(message "current buff %s" (current-buffer))
)
(add-hook 'window-buffer-change-functions #'test-window-buffer-change)
多谢,确实可以触发函数。 不过这样还是解决不了问题,这个问题是consult 这个包造成的。关掉consult 是好的。
buffer-list-update-hook
也可以试试。
这个也没用。
我再研究下是post-command-hook
是怎么被 consult-buffer
给吞了,用默认的switch-to-buffer
就没事。
@tumashu 由于post-command-hook的方案和consult-buffer冲突,我使用了你在pyim里的方案+ 上面的函数。现在一切正常了。
需要的朋友可以下载这个im-cursor-chg.el,并 加入到load-path
,然后这样设置即可:
(with-eval-after-load 'rime
(require 'im-cursor-chg)
(im-start-daemon))
ps:如果不用 consult的话,用一楼的方案更加简单。
有的朋友get不到更改光标颜色的点。这里我录了个动图,更加直观。
全程中英文混输,不需要按切换输入法的按键。只要看到黄颜色就是中文,红颜色就是英文。mode-line 也不需要输入法提示了。
PS: cousult 的bug 已经修复。两种方案都可以使用。
给consult
提了个issue,作者反应速度很快,两下就修好了。原来是consult
的预览功能产生的影响,造成 post-command-hook
在切换buffer后操作的仍然是上一个buffer。
所以,还是继续使用post-command-hook
的方案了,timer
的延迟看的有点不爽,强迫症😄。
666, 我也试着在 pyim-indicator 中使用 post-command-hook
像这种计算量少,对实时要求高的用post-command-hook 是挺合适的。我这边用下来,也没发现有性能问题。其实以前我也一直用 cursor-chg
这个包。
我准备两种方式都支持,万一遇到特殊的场景,也有个用的。
请问下怎么在doom emacs里配置这个?
我没用过 doom,应该只要把 im-cursor-chg.el 加入到你的 load-path,再加上下面的配置就可以了。
(require 'im-cursor-chg)
(cursor-chg-mode 1)
下面是我用的use-package 的配置:
(use-package im-cursor-chg
:ensure nil
:after rime
:config
(cursor-chg-mode 1))
PS:其实就两个函数,你直接写到配置里都是可以的
一共有几个版本的im-cursor-chg.el呀。我这个版本里没有cursor-chg-mode,而只有im-start-daemon