Function: evil-visual-block-corner
evil-visual-block-corner is a byte-compiled function defined in
evil-states.el.
Signature
(evil-visual-block-corner &optional CORNER POINT MARK)
Documentation
Block corner corresponding to POINT, with MARK in opposite corner.
Depending on POINT and MARK, the return value is upper-left,
upper-right, lower-left or lower-right:
upper-left +---+ upper-right
| |
lower-left +---+ lower-right
One-column or one-row blocks are ambiguous. In such cases,
the horizontal or vertical component of CORNER is used.
CORNER defaults to upper-left.
Source Code
;; Defined in ~/.emacs.d/elpa/evil-20251108.138/evil-states.el
(defun evil-visual-block-corner (&optional corner point mark)
"Block corner corresponding to POINT, with MARK in opposite corner.
Depending on POINT and MARK, the return value is `upper-left',
`upper-right', `lower-left' or `lower-right':
upper-left +---+ upper-right
| |
lower-left +---+ lower-right
One-column or one-row blocks are ambiguous. In such cases,
the horizontal or vertical component of CORNER is used.
CORNER defaults to `upper-left'."
(let* ((point (or point (point)))
(mark (or mark (mark t)))
(corner (or corner
(when evil-visual-overlay
(overlay-get evil-visual-overlay :corner))
'upper-left))
(point-col (evil-column point))
(mark-col (evil-column mark))
(upperp (if (save-excursion (goto-char (min point mark))
(search-forward "\n" (max point mark) t))
(< point mark)
(memq corner '(upper-left upper-right))))
(leftp (if (= point-col mark-col)
(memq corner '(upper-left lower-left))
(< point-col mark-col))))
(if upperp
(if leftp 'upper-left 'upper-right)
(if leftp 'lower-left 'lower-right))))