hi-list.el: カーソルを含んでいるリストを常時ハイライトするマイナーモードを作ってみた

impromptu のハイライト表示が便利そう! Emacs でも使ってみたい!

vimeo.com

というわけでマイナーモードを作ってみました。 動作は次の動画のようになってます:

www.youtube.com

ダウンロード

github.com

hi-list.el を load-path の通った場所に置いてください。

設定(.emacs.el)

(require 'hi-list)

;; ハイライト範囲の背景色を指定します。推奨。
;; これがないと色が付かない場合があるようです……
(set-face-background 'hi-list-face "#8aa")

使い方

M-x hi-list-mode RET でモードをトグルします。

他の設定など

必要なら .emacs.el に追加してください。

;; emacs-lisp-mode の場合は自動的にモードを有効に
(add-hook 'emacs-lisp-mode-hook 'hi-list-mode)

;; リスト内に含まれる文字数がこれ以上だとハイライトしません。
(setq hi-list:limit-chars 5000)

;; ハイライト表示を更新する間隔(秒)
(setq hi-list:repeat-sec 1)

上のデモ動画で行っているハイライト部分のコピーと切り取りを使いたい場合は 以下を追加してください。

(define-key hi-list:map
  (kbd "C-w") (lambda () (interactive)
                (apply-to-highlighted 'kill-region)))
(define-key hi-list:map
  (kbd "M-w") (lambda () (interactive)
                (apply-to-highlighted 'kill-ring-save)))

リージョンがアクティブな場合は通常の動作、 リージョンがアクティブでない場合は C-w でハイライト部分の切り取り(kill-region)、 M-w でコピー(kill-ring-save)を行います。

参考(外部リンク)