Mercurial > emacs
changeset 21123:e1c817a29b2d
(fill-nobreak-predicate): New variable.
(fill-region-as-paragraph): Obey fill-nobreak-predicate.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 09 Mar 1998 06:37:20 +0000 |
parents | 912cc3491589 |
children | 2089d9bfb3d7 |
files | lisp/textmodes/fill.el |
diffstat | 1 files changed, 20 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/textmodes/fill.el Mon Mar 09 06:36:42 1998 +0000 +++ b/lisp/textmodes/fill.el Mon Mar 09 06:37:20 1998 +0000 @@ -247,6 +247,11 @@ (concat result "a")))) result))))))) +(defvar fill-nobreak-predicate nil + "If non-nil, a predicate for recognizing places not to break a line. +The predicate is called with no arguments, with point at the place +to be tested. If it returns t, fill commands do not break the line there.") + (defun fill-region-as-paragraph (from to &optional justify nosqueeze squeeze-after) "Fill the region as one paragraph. @@ -421,14 +426,17 @@ ;; further fills will assume it ends a sentence. ;; If we now know it does not end a sentence, ;; avoid putting it at the end of the line. - (if sentence-end-double-space - (while (and (> (point) (+ linebeg 2)) + (while (or (and sentence-end-double-space + (> (point) (+ linebeg 2)) (eq (preceding-char) ?\ ) (not (eq (following-char) ?\ )) - (eq (char-after (- (point) 2)) ?\.)) - (forward-char -2) - (if (re-search-backward " \\|\\c|.\\|.\\c|" linebeg 0) - (forward-char 1)))) + (eq (char-after (- (point) 2)) ?\.) + (progn (forward-char -2) t)) + (and fill-nobreak-predicate + (funcall fill-nobreak-predicate) + (goto-char (match-beginning 0)))) + (if (re-search-backward " \\|\\c|.\\|.\\c|" linebeg 0) + (forward-char 1))) ;; 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, @@ -450,7 +458,9 @@ sentence-end-double-space (save-excursion (forward-char -1) (and (looking-at "\\. ") - (not (looking-at "\\. "))))))) + (not (looking-at "\\. "))))) + (and fill-nobreak-predicate + (funcall fill-nobreak-predicate)))) ;; Find a breakable point while ignoring the ;; following spaces. (skip-chars-forward " \t") @@ -495,7 +505,9 @@ sentence-end-double-space (save-excursion (forward-char -1) (and (looking-at "\\. ") - (not (looking-at "\\. "))))))) + (not (looking-at "\\. "))))) + (and fill-nobreak-predicate + (funcall fill-nobreak-predicate)))) ;; Find a breakable point while ignoring the ;; following spaces. (skip-chars-forward " \t")