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))))