Function: expreg--filter-regions
expreg--filter-regions is a natively compiled function defined in
expreg.el.
Signature
(expreg--filter-regions REGIONS ORIG)
Documentation
Filter out invalid regions in REGIONS regarding ORIG.
ORIG is the current position. Each region is (BEG . END).
Source Code
;; Defined in /nix/store/29cdhkmkqv2bgp3p30khhf35kkbgx1ya-emacs-packages-deps/share/emacs/site-lisp/elpa/expreg-1.4.1/expreg.el
(defun expreg--filter-regions (regions orig)
"Filter out invalid regions in REGIONS regarding ORIG.
ORIG is the current position. Each region is (BEG . END)."
(let (orig-at-beg-of-something
orig-at-end-of-something)
(setq regions (seq-filter
(lambda (region)
(expreg--valid-p region orig))
regions))
;; It is important that this runs after the first filter.
;; ‘orig-at-beg/end-of-something’ is t means there are some REGION
;; that starts/ends at ORIG.
(dolist (region regions)
(when (eq (cadr region) orig)
(setq orig-at-beg-of-something t))
(when (eq (cddr region) orig)
(setq orig-at-end-of-something t)))
;; If there are regions that start at ORIG, filter out
;; regions that ends at ORIG.
(setq regions (cl-remove-if
(lambda (region)
(and orig-at-beg-of-something
(eq (cddr region) orig)))
regions))
;; OTOH, if there are regions that ends at ORIG, filter out
;; regions that starts AFTER ORIGN, eg, special cases in
;; ‘expreg--list-at-point’.
(setq regions (cl-remove-if
(lambda (region)
(and orig-at-end-of-something
(> (cadr region) orig)))
regions))
regions))