1
0
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-11-29 07:58:21 +00:00

org-src: Use point instead of column for coords

* lisp/org-src.el (org-src--coordinates)
(org-src--goto-coordinates): Use point instead of column.

Using a column-based approach fails to account for invisible regions
or display overlays that change the number of columns: for example,
showing a LaTeX \alpha as α.  In src edits which involve such
structures, this causes the point to be shifted undesirably.  By using
a point-based approach this issue does not occur.
This commit is contained in:
TEC 2021-04-28 18:17:00 +08:00 committed by Bastien Guerry
parent dcd7b576b7
commit 400d2d9fd7

View File

@ -327,8 +327,7 @@ a cons cell (LINE . COLUMN) or symbol `end'. See also
(cons (count-lines beg (line-beginning-position)) (cons (count-lines beg (line-beginning-position))
;; Column is relative to the end of line to avoid problems of ;; Column is relative to the end of line to avoid problems of
;; comma escaping or colons appended in front of the line. ;; comma escaping or colons appended in front of the line.
(- (current-column) (- (point) (min end (line-end-position)))))))
(progn (end-of-line) (current-column)))))))
(defun org-src--goto-coordinates (coord beg end) (defun org-src--goto-coordinates (coord beg end)
"Move to coordinates COORD relatively to BEG and END. "Move to coordinates COORD relatively to BEG and END.
@ -341,9 +340,9 @@ which see. BEG and END are buffer positions."
(org-with-wide-buffer (org-with-wide-buffer
(goto-char beg) (goto-char beg)
(forward-line (car coord)) (forward-line (car coord))
(end-of-line) (max (point)
(org-move-to-column (max (+ (current-column) (cdr coord)) 0)) (+ (min end (line-end-position))
(point))))) (cdr coord)))))))
(defun org-src--contents-area (datum) (defun org-src--contents-area (datum)
"Return contents boundaries of DATUM. "Return contents boundaries of DATUM.