一定時間だけ指定範囲をハイライトする Emacs Lisp

volatile-highlight.el - Gist


ハイライトしたい範囲の開始ポイントと終了ポイントを指定すると 一時的に指定範囲をハイライトする。 ハイライトする時間はデフォルトは 0.1秒なので、一瞬キラっとする感じ。

;; require する
(require 'volatile-highlight)

;; 使う
(volatile-highlight 1 10) ; 開始位置、終了位置
(volatile-highlight 1 10 2) ; 開始位置、終了位置、ハイライトさせる時間(秒)

ハイライトに使っているフェイスは volatile-highlight-face で、たとえば背景色を変えたい場合は

(set-face-background 'volatile-highlight-face "#ff8")

のように指定する。

デフォルトのハイライト持続時間を変更したい場合は volatile-highlight:default-duration-sec に秒数をセットする。

(setq volatile-highlight:default-duration-sec 10)

eval-defun または eval-last-sexp して一瞬キラッとさせたい場合の例:

(require 'thingatpt) ; for beginning-of-sexp

(defadvice eval-defun
  (after blink-after-eval-defun activate)
  (let (beg end)
    (save-excursion
      (end-of-defun) (forward-char -1)
      (setq end (point))
      (beginning-of-defun)
      (setq beg (point)))
    (volatile-highlight beg end 0.2)))
(ad-activate 'eval-defun)

(defadvice eval-last-sexp
  (after blink-after-eval-last-sexp activate)
  (let (beg end)
    (save-excursion
      (setq end (point))
      (beginning-of-sexp)
      (setq beg (point)))
    (volatile-highlight beg end 0.2)))
(ad-activate 'eval-last-sexp)

追記 2011-10-26

修正しました。変更点は以下の通り。

  • 複数の箇所を同時にハイライトできるようにした
  • volatile-highlight の3番目の引数で持続時間を指定できるようにした(optional)
  • 変数名などを修正

関連記事

参考