changeset 48286:a820dd4741e1

(fill-nobreak-invisible): New var. (fill-nobreak-p): Test it; return t if set and point invisible. (fill-newline): Test it; remove invisible prop on newline if set.
author Kim F. Storm <storm@cua.dk>
date Wed, 13 Nov 2002 23:32:21 +0000
parents 64107c7851aa
children 205cb7dc9d47
files lisp/textmodes/fill.el
diffstat 1 files changed, 16 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/textmodes/fill.el	Wed Nov 13 20:19:38 2002 +0000
+++ b/lisp/textmodes/fill.el	Wed Nov 13 23:32:21 2002 +0000
@@ -316,10 +316,18 @@
   :type 'hook
   :options '(fill-french-nobreak-p fill-single-word-nobreak-p))
 
+(defcustom fill-nobreak-invisible nil
+  "Non-nil means that fill command do not break lines in invisible text."
+  :type 'boolean
+  :group 'fill)
+
 (defun fill-nobreak-p ()
   "Return nil if breaking the line at point is allowed.
-Can be customized with the variable `fill-nobreak-predicate'."
-  (unless (bolp)
+Can be customized with the variables `fill-nobreak-predicate'
+and `fill-nobreak-invisible'."
+  (or
+   (and fill-nobreak-invisible (line-move-invisible (point)))
+   (unless (bolp)
     (or
      ;; Don't break after a period followed by just one space.
      ;; Move back to the previous place to break.
@@ -340,7 +348,7 @@
      (unless use-hard-newlines
        (save-excursion
 	 (skip-chars-forward " \t") (looking-at paragraph-start)))
-     (run-hook-with-args-until-success 'fill-nobreak-predicate))))
+     (run-hook-with-args-until-success 'fill-nobreak-predicate)))))
 
 ;; Put `fill-find-break-point-function' property to charsets which
 ;; require special functions to find line breaking point.
@@ -525,6 +533,11 @@
   ;; Give newline the properties of the space(s) it replaces
   (set-text-properties (1- (point)) (point)
 		       (text-properties-at (point)))
+  ;; If we don't want breaks in invisible text, don't insert
+  ;; an invisible newline.
+  (if fill-nobreak-invisible
+      (remove-text-properties (1- (point)) (point)
+			      '(invisible t)))
   (if (or fill-prefix
 	  (not fill-indent-according-to-mode))
       (indent-to-left-margin)