hunk ./format.scm 237
+   (format-with-property 'BROKEN? #f)
hunk ./format.scm 244
+(define (track-string-break state string)
+  (let ((length (string-length string)))
+    (if (> length 0)
+        (track-char-break state (string-ref string (- length 1)))
+        state)))
+
+(define (track-char-break state char)
+  (format-state/insert-property state 'BROKEN? (char-break? char)))
+
hunk ./format.scm 255
-  (let ((line (format-state/line state))
-        (column (format-state/column state)))
-    (cond ((and line column)
-           (track-line-and-column state string line column))
-          (line
-           (track-line state string line))
-          (column
-           (track-column state string column))
-          (else state))))
+  (let ((state (track-string-break state string)))
+    (let ((line (format-state/line state))
+          (column (format-state/column state)))
+      (cond ((and line column)
+             (track-line-and-column state string line column))
+            (line
+             (track-line state string line))
+            (column
+             (track-column state string column))
+            (else state)))))
hunk ./format.scm 299
-  (if (char-line-break? char)
-      (format-state/reset-column (format-state/advance-line state))
-      (format-state/advance-column state)))
+  (let ((state (track-char-break state char)))
+    (if (char-line-break? char)
+        (format-state/reset-column (format-state/advance-line state))
+        (format-state/advance-column state))))
hunk ./format.scm 305
-  (let ((column (format-state/column state)))
-    (if column
-        (if (positive? column)
-            (line-tracking-char-handler state #\space)
-            state)
-        (line-tracking-char-handler state #\space))))
+  (if (format-state/lookup-property state 'BROKEN? #f)
+      state
+      (let ((column (format-state/column state)))
+        (if column
+            (if (positive? column)
+                (line-tracking-char-handler state #\space)
+                state)
+            (line-tracking-char-handler state #\space)))))
hunk ./format.scm 772
+(define-syntax named-format
+  (syntax-rules ()
+    ((NAMED-FORMAT name format)
+     ;; Try our hardest to associate the name with debugging
+     ;; information: name both lambdas here, and put it in their
+     ;; environments.
+     (LET* ((THE-NAME 'name)
+            (THE-FORMAT
+             (FORMAT:DELAYED
+              (LETREC ((name (LAMBDA () (NO-OP THE-NAME) format)))
+                name))))
+       (DEFINE (name STATE)
+         (NO-OP THE-NAME)
+         (APPLY-FORMAT THE-FORMAT STATE))
+       (PROCEDURE->FORMAT name)))))
+
hunk ./format.scm 792
-       (FORMAT:NAMED 'name (FORMAT:DELAYED (LAMBDA () format)))))
+       (NAMED-FORMAT name format)))
hunk ./format.scm 794
-     (DEFINE name (FORMAT:NAMED 'name (FORMAT:DELAYED (LAMBDA () format)))))))
+     (DEFINE name
+       (NAMED-FORMAT name format)))))
