Function: hs-make-overlay

hs-make-overlay is a byte-compiled function defined in hideshow.el.gz.

Signature

(hs-make-overlay B E KIND)

Documentation

Return a new overlay in region defined by B and E with type KIND.

KIND is either code or comment. The following properties are set in the overlay: invisible hs. Also, depending on variable hs-isearch-open, the following properties may be present: isearch-open-invisible isearch-open-invisible-temporary.

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/hideshow.el.gz
(defun hs-make-overlay (b e kind)
  "Return a new overlay in region defined by B and E with type KIND.
KIND is either `code' or `comment'.  The following properties are set in
the overlay: `invisible' `hs'.  Also, depending on variable
`hs-isearch-open', the following properties may be present:
`isearch-open-invisible' `isearch-open-invisible-temporary'."
  (let ((ov (make-overlay b e))
        (io (if (eq 'block hs-isearch-open)
                ;; backward compatibility -- `block'<=>`code'
                'code
              hs-isearch-open)))
    (overlay-put ov 'invisible 'hs)
    (overlay-put ov 'display
                 (propertize
                  (hs--get-ellipsis b e)
                  'mouse-face
                  'highlight
                  'help-echo "mouse-1: show hidden lines"
                  'keymap '(keymap (mouse-1 . hs-toggle-hiding))))
    ;; Internal properties
    (overlay-put ov 'hs kind)
    ;; Isearch integration
    (when (or (eq io t) (eq io kind))
      (overlay-put ov 'isearch-open-invisible 'hs-isearch-show)
      (overlay-put ov 'isearch-open-invisible-temporary
                   'hs-isearch-show-temporary))
    ;; Remove overlay after modifications
    (overlay-put ov 'modification-hooks    '(hs--discard-overlay-before-changes))
    (overlay-put ov 'insert-in-front-hooks '(hs--discard-overlay-before-changes))
    (overlay-put ov 'insert-behind-hooks   '(hs--discard-overlay-before-changes))

    (when hs-set-up-overlay (funcall hs-set-up-overlay ov))
    (hs--refresh-indicators b (1+ b))
    ov))