5

Emacsでカーソルをハートビートのように点滅させるにはどうすればよいですか? コンピュータがサスペンドされているときのラップトップのフロント パネルの LED のように。

カーソルの点滅を制御する変数がありblink-cursor-alistますが、それを使用して要件を満たす方法がわかりません。

出来ますか?

4

2 に答える 2

8

この単純なマイナー モードは、ハートビート スタイルの点滅カーソルを実装します。微調整heartbeat-cursor-colorsして、さまざまな色合いやそのバリエーションを得ることができます。

コードは Emacs 24.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))))))))
于 2012-12-01T11:08:47.147 に答える
4

このオプションは「まばたき」という言葉と関係があると思います。したがって、Ch a (apropos の場合) を押して、「まばたき」と入力します。私のemacsでは、2つのオプションがあります:blink-cursor-modeblink-matching-open. 最初のものは正しく見えます。説明には、「点滅カーソルモードの切り替え」と書かれています。

私のemacsのショートカットには次のように書かれています:<menu-bar> <options> <blink-cursor-mode>. したがって、オプションはメニューのどこかにあると思います。おそらく「オプション」の下にあります。[オプション] メニューを開くと、[カーソルの点滅] とチェック ボックスが表示されています。

これもカスタマイズ可能なオプションのようです。だから私は入力M-x customize-optionしてからblink-cursor-mode. これにより、値を切り替えて、将来のセッションのために保存することもできます。

編集:カーソルの ON と OFF の間の間隔を設定するには、 という変数がありますblink-cursor-interval。と を使用M-x customize-variableblink-cursor-intervalて間隔を設定できます。この変数blink-cursor-alistは、OFF 状態のカーソル タイプと ON 状態のカーソル タイプを一致させ、まばたきの速度とは関係ありません。

EDIT2:私が知る限り、ON 状態のカーソルの形状は OFF 状態の形状とは異なる可能性があるため、カーソルを徐々にオフにしてからオンにする方法はありません (したがって、形状の段階的な変化は必要)。

于 2012-11-29T12:40:42.593 に答える