[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: overlays and movement
From: |
Manuel Giraud |
Subject: |
Re: overlays and movement |
Date: |
Tue, 28 Jun 2022 17:56:38 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (berkeley-unix) |
Hi,
FWIW, here is what I wanted to do. It is not super fast but quite
usable.
--8<---------------cut here---------------start------------->8---
;; Fog
(defvar up-fog nil)
(defvar down-fog nil)
(defvar fog-distance 10)
(defun up-fog-end ()
(save-excursion
(if (zerop (forward-line (- (+ fog-distance 1))))
(progn (end-of-line)
(point))
(point-min))))
(defun down-fog-start ()
(save-excursion
(forward-line (+ fog-distance 1))
(beginning-of-line)
(point)))
(defface fog
'((t :foreground "grey90" :background "grey95"))
"Fog face.")
(defun maybe-move-fog ()
(while-no-input
(redisplay)
(let ((new-end (up-fog-end))
(new-start (down-fog-start)))
(when (or (/= (overlay-end up-fog) new-end)
(/= (overlay-start down-fog) new-start))
(move-overlay up-fog (point-min) new-end)
(move-overlay down-fog new-start (point-max))))))
(defun fog-on ()
(maybe-move-fog)
(overlay-put up-fog 'face 'fog)
(overlay-put down-fog 'face 'fog))
(defun fog-off ()
(overlay-put up-fog 'face nil)
(overlay-put down-fog 'face nil))
(define-minor-mode fog-mode
"Minor fog mode"
:lighter " fog"
(if fog-mode
(progn
(setq up-fog (make-overlay 1 1)
down-fog (make-overlay 1 1))
(fog-on)
(add-hook 'post-command-hook 'maybe-move-fog 0 t))
(fog-off)
(remove-hook 'post-command-hook 'maybe-move-fog t)
(delete-overlay up-fog)
(delete-overlay down-fog)
(setq up-fog nil down-fog nil)))
--8<---------------cut here---------------end--------------->8---
--
Manuel Giraud
- overlays and movement, Manuel Giraud, 2022/06/28
- Re: overlays and movement, Tassilo Horn, 2022/06/28
- Re: overlays and movement, Tassilo Horn, 2022/06/28
- Re: overlays and movement, Manuel Giraud, 2022/06/29
- Re: overlays and movement, Tassilo Horn, 2022/06/30
- Re: overlays and movement, Emanuel Berg, 2022/06/30