fringeの使い方

gdb-ui のソースを見てたら fringe にビットマップを表示するやり方がわかった。display プロパティに (fringe BITMAP) を指定すればいいっぽい。そうするとその行の fringe に BITMAP が表示される。

ただし、そのまま display プロパティを指定すると文字が見えなくなるから、サイズ1の文字列に display プロパティを指定して、それを before-string オーバーレイとして指定してた。

  • BITMAP は fringe-bitmaps にあるものしか使えない。
  • その定義は define-fringe-bitmap で行なう。
  • 各状態(行を折り返してるとか)のビットマップは fringe-indicator-alist にある。


せっかくなんで fringe-bitmaps に定義されてるビットマップを全部表示するのを書いてみた。


遅いからもうねるべ。

間違って自分でスター付けた…orz

ソース

(defun fringe-sample ()
  (interactive)
  (mapcar
   (lambda (bitmap)
     (let ((beg (point)))
       (insert (format "%s\n" bitmap))
       (let* ((s (make-string 1 ?x))
              (ovr (make-overlay beg (point))))
         (put-text-property 0 1 'display (list 'left-fringe bitmap) s)
         (overlay-put ovr 'before-string s)
         (overlay-put ovr 'evaporate t))))
   fringe-bitmaps))