Emacs 多个 hl-line faces/change 行挂钩?

Emacs multiple hl-line faces/change line hook?

当我遇到问题时,我正在更新我的 emacs(我使用 doom btw)配置。我想为所有移动操作闪烁当前行。我还希望对当前行产生持续影响。我可以做一个或另一个,但到目前为止我找不到同时做这两个的方法。

目前,我在我希望始终显示的行周围有一个框。我希望背景在任何移动时都闪烁(例如线条变化、帧聚焦)。我可以使用 hl-line+.el 在它移动时使线闪烁,但这似乎是在选择 hl-line 面。它迫使我在恒定的线条高亮和运动中的线条高亮之间做出选择。我也可以使用 nav-flash 在更改缓冲区时闪烁,但这不会对线路更改做出反应。有没有我可以添加 nav-flash 的挂钩?有没有一种方法可以覆盖 hl-line+ 以使用不同的面孔并允许该线也正常突出显示?对于它的价值,这是我当前的配置设置:

((hl-line &override)
 :background bg
 :box '(
         :color "#fb7d32"
         :line-width -1))
(nav-flash-face
 :foreground bg
 :background "#fb7d32")

非常感谢任何建议,我会认为自己是中级 emacs 用户,所以我不害怕编写自己的函数和挂钩,如果这是这样的话。无论如何,提前感谢您的帮助和建议!

我在安装了 doom 的 emacs 26.3 上。

hl-line-flash,从 hl-line+.el 开始只使用 hl-line-highlight

并且该函数只是重用了现有的叠加层。该叠加层(由 hl-line-make-overlay 创建)使用变量 hl-line-face.

的值

你可以做的是用 :around 建议来建议 hl-line-flash,这样它就可以做到这一点:

  1. hl-line-face 绑定到您想要闪光的脸上。
  2. 删除现有叠加层 (hl-line-overlay)。
  3. 然后调用 hl-line-highlight-now 的原始定义。

毫无疑问,还有其他方法可以满足您的需求。一种方法是只定义您自己的命令来代替 hl-line-flash,使用与上述建议描述执行相同操作的代码。只需围绕对 hl-line-highlight-now 的调用执行此操作,以便该函数使用您想要闪烁的面孔。