tuned;
authorwenzelm
Sat, 19 Dec 2015 19:07:14 +0100
changeset 61868 8c0037ebab1a
parent 61867 95cce5313c83
child 61869 ba466ac335e3
tuned;
src/Pure/General/pretty.scala
--- a/src/Pure/General/pretty.scala	Sat Dec 19 15:31:53 2015 +0100
+++ b/src/Pure/General/pretty.scala	Sat Dec 19 19:07:14 2015 +0100
@@ -24,6 +24,8 @@
   {
     val unit: Double
     def apply(s: String): Double
+    def content_length(body: XML.Body): Double =
+      XML.traverse_text(body)(0.0)(_ + apply(_))
   }
 
   object Metric_Default extends Metric
@@ -103,14 +105,11 @@
     val breakgain = margin / 20
     val emergencypos = (margin / 2).round.toInt
 
-    def content_length(body: XML.Body): Double =
-      XML.traverse_text(body)(0.0)(_ + metric(_))
-
     def break_dist(trees: XML.Body, after: Double): Double =
       trees match {
         case Break(_, _) :: _ => 0.0
         case FBreak :: _ => 0.0
-        case t :: ts => content_length(List(t)) + break_dist(ts, after)
+        case t :: ts => metric.content_length(List(t)) + break_dist(ts, after)
         case Nil => after
       }
 
@@ -135,10 +134,8 @@
         case Block(consistent, indent, body) :: ts =>
           val pos1 = (text.pos + indent).ceil.toInt
           val pos2 = pos1 % emergencypos
-          val blockin1 =
-            if (pos1 < emergencypos) pos1
-            else pos2
-          val blen = content_length(body)
+          val blockin1 = if (pos1 < emergencypos) pos1 else pos2
+          val blen = metric.content_length(body)
           val d = break_dist(ts, after)
           val body1 = if (consistent && text.pos + blen > margin - d) force_all(body) else body
           val btext = format(body1, blockin1, d, text)