Ver Fonte

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.
TEC há 3 anos atrás
pai
commit
400d2d9fd7
1 ficheiros alterados com 4 adições e 5 exclusões
  1. 4 5
      lisp/org-src.el

+ 4 - 5
lisp/org-src.el

@@ -327,8 +327,7 @@ a cons cell (LINE . COLUMN) or symbol `end'.  See also
      (cons (count-lines beg (line-beginning-position))
 	   ;; Column is relative to the end of line to avoid problems of
 	   ;; comma escaping or colons appended in front of the line.
-	   (- (current-column)
-	      (progn (end-of-line) (current-column)))))))
+	   (- (point) (min end (line-end-position)))))))
 
 (defun org-src--goto-coordinates (coord beg 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
       (goto-char beg)
       (forward-line (car coord))
-      (end-of-line)
-      (org-move-to-column (max (+ (current-column) (cdr coord)) 0))
-      (point)))))
+      (max (point)
+           (+ (min end (line-end-position))
+              (cdr coord)))))))
 
 (defun org-src--contents-area (datum)
   "Return contents boundaries of DATUM.