Expreg is now available on ELPA. This is just like expand-region, but (1) we generate all regions at once, and (2) should be easier to debug, and (3) we out-source language-specific expansions to tree-sitter. Bind ‘expreg-expand’ and ‘expreg-contract’ and start using it. Note that if point is in between two possible regions, we only keep the region after point. In the example below, only region B is kept (“|” represents point): (region A)|(region B) Expreg also recognizes subwords if ‘subword-mode’ is on.