symbol-overlay を highlight-symbol-nav-mode っぽく使う
symbol-overlay
特定のシンボルにハイライトを置いたり (symbol-overlay-put)、カーソル下のシンボルを自動でハイライトしたり (symbol-overlay-mode) する
font-lock ではなく overlay による実装
font-lock が重いメジャーモードでも軽い
自動ハイライトはデフォルトでウィンドウ表示領域内のシンボルのみハイライトする
symbol-overlay-displayed-windowで変更可能
デフォルト t
nil の場合、スコープ内 or バッファ全体(M-x symbol-overlay-toggle-in-scopeで変更可能)に対してハイライト
シンボルがバッファ(表示)上で1つのみの場合ハイライトされない
highlight-symbol-nav-mode
M-n/M-pでカーソル下のシンボルの次/前の出現位置へジャンプする
めちゃ便利
symbol-overlay に乗り換えても nav-mode みたいなことしたい
symbol-overlay-mode-mapにキーバインドを追加するだけ
code:lisp
(with-eval-after-load 'symbol-overlay
(setq symbol-overlay-displayed-window nil)
(define-key symbol-overlay-mode-map (kbd "M-p") 'symbol-overlay-jump-prev)
(define-key symbol-overlay-mode-map (kbd "M-n") 'symbol-overlay-jump-next))
表示領域だけだと不便なのでsymbol-overlay-displayed-windowにnilにセットしている
チョットした違い
自動ハイライトを移動してもエコーエリアにカウントが表示されない
特に問題に感じなかったのでヨシ
終わり
symbol-overlay でもぴょんぴょん飛べて嬉しい
他メモ
show-paren-modeやisearch-forwardの実装を見てみたら、これらも overlay 実装だった