Emacs - 为光标闪烁设置不同的间隔

Jes*_*sse 5 emacs cursor blink

我想为闪烁ON和闪烁OFF设置不同的间隔.我的意思是,我希望光标在1秒钟内保持可见状态,并在0.2秒内保持关闭状态.我读了光标文档但最接近的是blink-cursor-interval,它改变了ON和OFF闪烁.

在Emacs中定制这个的最佳方法是什么?

Tho*_*mas 5

Emacs 中没有内置这样的功能,但是您可以通过在 .emacs 文件中添加以下几行来破解它:

(defvar blink-cursor-interval-visible 1)
(defvar blink-cursor-interval-invisible 0.2)

(defadvice internal-show-cursor (before unsymmetric-blink-cursor-interval)
  (when blink-cursor-timer
    (setf (timer--repeat-delay blink-cursor-timer)
          (if (internal-show-cursor-p)
              blink-cursor-interval-visible
            blink-cursor-interval-invisible))))
(ad-activate 'internal-show-cursor)
Run Code Online (Sandbox Code Playgroud)

Emacs 使用定时器调用的切换函数来实现光标的闪烁。每次调用该函数时,它要么隐藏当前可见的光标,要么显示不可见的光标。不幸的是,计时器以固定的时间间隔调用此函数。

为了根据光标的状态实现不同的延迟时间,上面的代码建议了显示或隐藏光标的内部函数。每次调用该函数时,建议都会将计时器的延迟时间更改为 1 或 0.2,具体取决于光标是否可见。也就是说,每次隐藏或显示光标时,定时器的延迟时间都会改变。

相当hackish,但它确实有效。