Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
期待一种让光标像心跳一样在Emacs中闪烁的方法_Emacs_Elisp - Fatal编程技术网

期待一种让光标像心跳一样在Emacs中闪烁的方法

期待一种让光标像心跳一样在Emacs中闪烁的方法,emacs,elisp,Emacs,Elisp,如何使Emacs中的光标像心跳一样闪烁。就像电脑挂起时笔记本电脑前面板上的LED一样 有变量闪烁光标列表控制光标闪烁,但我不知道如何使用它来满足我的要求 有可能吗?您猜该选项与“闪烁”一词有关。 所以你按C-HA(适当的)并输入“闪烁”。 在emacs上,我有两个选项:闪烁光标模式和闪烁匹配打开。 第一个看起来不错。描述为:“切换闪烁光标模式” 我的emacs上的快捷方式是:。 所以我猜这个选项在菜单的某个地方,也许在“选项”下面。 我打开选项菜单,它是:“闪烁的光标”和一个勾选框 这听起来也是

如何使Emacs中的光标像心跳一样闪烁。就像电脑挂起时笔记本电脑前面板上的LED一样

有变量
闪烁光标列表
控制光标闪烁,但我不知道如何使用它来满足我的要求


有可能吗?

您猜该选项与“闪烁”一词有关。 所以你按C-HA(适当的)并输入“闪烁”。 在emacs上,我有两个选项:
闪烁光标模式
闪烁匹配打开
。 第一个看起来不错。描述为:“切换闪烁光标模式”

我的emacs上的快捷方式是:
。 所以我猜这个选项在菜单的某个地方,也许在“选项”下面。 我打开选项菜单,它是:“闪烁的光标”和一个勾选框

这听起来也是一个可以定制的选项。 因此,我键入
M-x自定义选项
,然后键入
闪烁光标模式
。这允许我切换该值,并将其保存以备将来使用

编辑:要设置光标的打开和关闭间隔,有一个名为
闪烁光标间隔的变量。您可以使用
M-x自定义变量
,然后
闪烁光标间隔
来设置间隔。变量
闪烁光标列表
将关闭状态光标类型与打开状态光标类型相匹配,并且与闪烁速度无关


EDIT2:据我所知,没有办法使光标逐渐关闭和打开,因为打开状态下光标的形状可能与关闭状态下的形状不同(因此需要逐渐改变形状)。

这个简单的次要模式实现了心跳式闪烁光标。您可以调整
心跳光标颜色
,以获得不同的色调或变化

该代码在Emacs24.2.1中进行了测试,但很容易移植到较旧的Emacsen

(require 'cl)
(require 'color)

(defvar heartbeat-fps 16)
(defvar heartbeat-period 5)

(defun heartbeat-range (from to cnt)
  (let ((step (/ (- to from) (float cnt))))
    (loop for i below cnt collect (+ from (* step i)))))

(defun heartbeat-cursor-colors ()
  (let ((cnt (* heartbeat-period heartbeat-fps)))
    (mapcar (lambda (r)
              (color-rgb-to-hex r 0 0))
            (nconc (heartbeat-range .2 1 (/ cnt 2))
                   (heartbeat-range 1 .2 (/ cnt 2))))))

(defvar heartbeat-cursor-timer nil)
(defvar heartbeat-cursor-old-color)

(define-minor-mode heartbeat-cursor-mode
  "Change cursor color with the heartbeat effect."
  nil "" nil
  :global t
  (when heartbeat-cursor-timer
    (cancel-timer heartbeat-cursor-timer)
    (setq heartbeat-cursor-timer nil)
    (set-face-background 'cursor heartbeat-cursor-old-color))
  (when heartbeat-cursor-mode
    (setq heartbeat-cursor-old-color (face-background 'cursor)
          heartbeat-cursor-timer
          (run-with-timer
           0 (/ 1 (float heartbeat-fps))
           (lexical-let ((colors (heartbeat-cursor-colors)) tail)
             (lambda ()
               (setq tail (or (cdr tail) colors))
               (set-face-background 'cursor (car tail))))))))

是的,我知道光标可以闪烁,但它能以慢节奏闪烁吗?不只是简单的开关,开关
就像电脑挂起时笔记本电脑前面板上的LED一样。
。谢谢:-)希望Emacs将来能有这个功能。@loushui未来已经到来。:)看我的答案,一个简单的心跳式闪烁光标。难以置信-对你和emacs来说都是荣誉。现在让我们看看您在Eclipse中是如何做到这一点的;-)太神了要使用emacs 24.3.1运行它,我必须将其设置为
nil
心跳光标计时器
-(defvar心跳光标计时器nil)@nic感谢您的测试,我现在更新了初始化
心跳光标计时器的答案。