Commit 1f980920 authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(line-move-finish): Find beg and end of line

before calling line-move-to-column.  Do consider intangible
when finding the end.  Take more care in analyzing the results
of intangibility after line-move-to-column.
parent 477feba7
......@@ -2638,12 +2638,17 @@ Outline mode sets this."
;; Set REPEAT to t to repeat the whole thing.
(setq repeat nil)
;; Move to the desired column.
(line-move-to-column column)
(let ((new (point))
(let (new
(line-beg (save-excursion (beginning-of-line) (point)))
(line-end (save-excursion (end-of-line) (point))))
;; Compute the end of the line
;; ignoring effectively intangible newlines.
(let ((inhibit-point-motion-hooks nil))
(save-excursion (end-of-line) (point)))))
;; Move to the desired column.
(line-move-to-column column)
(setq new (point))
;; Process intangibility within a line.
;; Move to the chosen destination position from above,
......@@ -2656,7 +2661,15 @@ Outline mode sets this."
;; If intangibility moves us to a different (later) place
;; in the same line, use that as the destination.
(if (<= (point) line-end)
(setq new (point))))
(setq new (point))
;; If that position is "too late",
;; try the previous allowable position.
;; See if it is ok.
(if (<= (point) line-end)
(setq new (point))
;; As a last resort, use the end of the line.
(setq new line-end))))
;; Now move to the updated destination, processing fields
;; as well as intangibility.
......@@ -2666,7 +2679,7 @@ Outline mode sets this."
(constrain-to-field new opoint nil t
;; If intangibility processing moved us to a different line,
;; If all this moved us to a different line,
;; retry everything within that new line.
(when (or (< (point) line-beg) (> (point) line-end))
;; Repeat the intangibility and field processing.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment