This page describes the use of an overlay to change the appearance of
^L (Control-L) characters. See PrettyControlL for an alternative approach that uses the display table instead of an overlay.
AndreRiemann contributed this code. It removes the`
^L’ and adds an overlay, which is underlined. The overlay only shows a whole line (not only under text), if the background color of the overlay differs from the background color of the window. Maybe I later make a minor mode from this with some more options (or someone else).
‘after-change-major-mode-hook’ is maybe not optimal? – AndreRiemann
(add-hook 'after-change-major-mode-hook (lambda () (font-lock-add-keywords nil `((,page-delimiter ;; variable with the regexp (usually "^\f" or "^^L") 0 (prog1 nil ;; don't display ^L (compose-region (match-beginning 0) (match-end 0) "") ;; make an overlay (like in hl-line) (let ((pdl (make-overlay (line-beginning-position) (line-beginning-position 2)))) ;; :background has to be different from the background color ;; gray1 here is just a little different from black (overlay-put pdl 'face '(:underline "gray30" :background "gray1")) (overlay-put pdl 'modification-hooks ;; these arguments are received from modification-hooks '((lambda (overlay after-p begin end &optional length) (delete-overlay overlay)))) (overlay-put pdl 'insert-in-front-hooks '((lambda (overlay after-p begin end &optional length) (delete-overlay overlay)))))) t)))))
This is very nice, except for the after-change-major-mode-hook which somehow conflicts with Gnus: the Gnus groups and summary buffers become black-only after this has been applied! --FabriceNiessen