Function: fill-move-to-break-point
fill-move-to-break-point is a byte-compiled function defined in
fill.el.gz.
Signature
(fill-move-to-break-point LINEBEG)
Documentation
Move to the position where the line should be broken.
The break position will be always after LINEBEG and generally before point.
Source Code
;; Defined in /usr/src/emacs/lisp/textmodes/fill.el.gz
(defun fill-move-to-break-point (linebeg)
"Move to the position where the line should be broken.
The break position will be always after LINEBEG and generally before point."
;; If the fill column is before linebeg, move to linebeg.
(if (> linebeg (point)) (goto-char linebeg))
;; Move back to the point where we can break the line
;; at. We break the line between word or after/before
;; the character which has character category `|'. We
;; search space, \c| followed by a character, or \c|
;; following a character. If not found, place
;; the point at linebeg.
(while
(when (re-search-backward "[ \t]\\|\\c|.\\|.\\c|" linebeg 0)
;; In case of space, we place the point at next to
;; the point where the break occurs actually,
;; because we don't want to change the following
;; logic of original Emacs. In case of \c|, the
;; point is at the place where the break occurs.
(forward-char 1)
(when (fill-nobreak-p) (skip-chars-backward " \t" linebeg))))
;; Move back over the single space between the words.
(skip-chars-backward " \t")
;; If the left margin and fill prefix by themselves
;; pass the fill-column. or if they are zero
;; but we have no room for even one word,
;; keep at least one word or a character which has
;; category `|' anyway.
(if (>= linebeg (point))
;; Ok, skip at least one word or one \c| character.
;; Meanwhile, don't stop at a period followed by one space.
(let ((to (line-end-position))
(first t))
(goto-char linebeg)
(while (and (< (point) to) (or first (fill-nobreak-p)))
;; Find a breakable point while ignoring the
;; following spaces.
(skip-chars-forward " \t")
(if (looking-at "\\c|")
(forward-char 1)
(let ((pos (save-excursion
(skip-chars-forward "^ \n\t")
(point))))
(if (re-search-forward "\\c|" pos t)
(forward-char -1)
(goto-char pos))))
(setq first nil)))
(if enable-multibyte-characters
;; If we are going to break the line after or
;; before a non-ascii character, we may have to
;; run a special function for the charset of the
;; character to find the correct break point.
(if (not (and (eq (charset-after (1- (point))) 'ascii)
(eq (charset-after (point)) 'ascii)))
;; Make sure we take SOMETHING after the fill prefix if any.
(fill-find-break-point linebeg)))))