画面上の最初の行とか最後の行をオーバレイしてみる
なんとなくやってみた. 意外と簡単だった.
これで画面上の最初の行にメッセージを表示したりとかもそんなに苦労せずに作れるはず.
画面上の最初の行をオーバレイ
まずは画面上の最初の行をオーバレイする.
本当の意味での最初の行じゃなくて, 画面上の最初の行. 今見えている範囲における最初の行をオーバレイする
(let ((face 'highlight) ep ol) (save-excursion (goto-char (window-start)) (forward-line 1) (setq ep (point))) (setq ol (make-overlay (window-start) ep)) (overlay-put ol 'face face) (unwind-protect (read-key-sequence-vector "Please push some keys to delete the overlay : ") (delete-overlay ol)))
一応unwind-protectってやってみたけど意味あるんかね, これ.
(*追記*)overlay-putも含めてunwind-protectやってやらないと意味ないかな?
画面上の最後の行をオーバレイ
次ー. 画面上の最後の行. 今見えている範囲での最後の行.
とりあえず今見えている範囲における一番下に表示……のはずが, 画面の最終行よりも先に最終行がきちゃうと止まっちゃうっぽ.
まあそれはしゃーないかなと. そこまでやる気は今んとこなかったし.
(let ((face 'highlight) sp ol) (save-excursion (goto-char (window-end)) (forward-line -1) (setq sp (point))) (setq ol (make-overlay sp (window-end))) (overlay-put ol 'face face) (unwind-protect (read-key-sequence-vector "Please push some keys to delete the overlay : ") (delete-overlay ol)))
ほとんど最初の行に表示すんのと同じ. epがspだったり, window-endになってたり, forward-lineが-1になってたりとかそんなもん.
両方
画面上の最初の行と最後の行, 両方に表示してみる.
(let ((face 'highlight) ep sp bol eol) (save-excursion (goto-char (window-end)) (forward-line -1) (setq sp (point)) (goto-char (window-start)) (forward-line 1) (setq ep (point))) (setq bol (make-overlay (window-start) ep)) (setq eol (make-overlay sp (window-end))) (overlay-put bol 'face face) (overlay-put eol 'face face) (unwind-protect (read-key-sequence-vector "Please push some keys to delete the overlay : ") (delete-overlay bol) (delete-overlay eol)))
似たような記述あるけど気にしなーい. とりあえずはテストでやっただけなので動くこと優先で.
気をつける点を挙げるなら, ちゃんとdelete-overlayしないと残っちゃうよーってぐらいか?
オーバレイは面白いね.
更新時刻
- 1かいめ 2008年, 5月30日, 22:57
- 2かいめ 2008年, 5月30日, 23:25