2007/02/16
Emacsのマーク履歴にアイコン表示
探せばあるかもしれませんが、書いてみました。
Emacsのマーク位置は目に見えませんが、見たくなったら見えてもいいかな、と思いました(某エディタでの動作を見て)。
(global-set-key "\M-m" (lambda () (interactive) (if (not (boundp 'my-mark-overlays)) (setq my-mark-overlays nil)) (if my-mark-overlays (while my-mark-overlays (delete-overlay (car my-mark-overlays)) (setq my-mark-overlays (cdr my-mark-overlays))) (mapcar '(lambda (m) (let ((ov (make-overlay (marker-position m) (1+ (marker-position m))))) (overlay-put ov 'display (find-image '((:type xpm :file "right_arrow.xpm" :ascent center)))) (setq my-mark-overlays (cons ov my-mark-overlays)))) (cons (mark-marker) mark-ring)))))
M-mに割り当てるのが嫌な人は適当にキーアサインを決めてください。
コードは3つのパートに分かれています。最初のifからの2行は、my-mark-overlaysシンボルが空なら初期化している処理です。my-mark-overlaysは、この関数の中でしか使いませんが、スコープ的にはグローバルなシンボルです。whileから始まる3行は、アイコンを消す処理です。mapcarから始まる残りが、マーク履歴(現在のマークとmark-ring)にアイコンを表示する処理です。 結局、トグル的に動作します。
画像を載せます。 regionがハイライトしているのはtransient-mark-modeの効果で、矢印アイコンが現れているのがこのコードの効果です。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/icon-on-emacs-marks/tbping
Re:Emacsのマーク履歴にアイコン表示
transient-mark-modeと同じ効果かもしれないと思いました。
Re:Emacsのマーク履歴にアイコン表示
Re:Emacsのマーク履歴にアイコン表示
(setq transient-mark-mode t)
;)