From e40267eb0dac7ceff865d36104eeaf0fb75493ef Mon Sep 17 00:00:00 2001
From: Etienne Kneuss <colder@php.net>
Date: Thu, 20 Feb 2014 16:55:51 +0100
Subject: [PATCH] Indent properly based on line indentation, not position. Fix
 printing

---
 src/main/scala/leon/synthesis/FileInterface.scala | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/main/scala/leon/synthesis/FileInterface.scala b/src/main/scala/leon/synthesis/FileInterface.scala
index 29445a5ca..c2bac94ca 100644
--- a/src/main/scala/leon/synthesis/FileInterface.scala
+++ b/src/main/scala/leon/synthesis/FileInterface.scala
@@ -55,9 +55,18 @@ class FileInterface(reporter: Reporter) {
         val before = str.substring(0, from)
         val after  = str.substring(to, str.length)
 
-        val newCode = ScalaPrinter(toTree, PrinterOptions(baseIndent = fromTree.getPos.col/2))
+        // Get base indentation of last line:
+        val lineChars = before.substring(before.lastIndexOf('\n')+1).toList
 
-        before + newCode + after
+        println(lineChars)
+        println(lineChars.takeWhile(_ == ' '))
+
+        val indent = lineChars.takeWhile(_ == ' ').size
+
+        val p = new ScalaPrinter(PrinterOptions())
+        p.pp(toTree, Some(fromTree))(indent/2)
+
+        before + p.toString + after
 
       case p =>
         sys.error("Substitution requires RangePos on the input tree: "+fromTree +": "+fromTree.getClass+" GOT" +p)
-- 
GitLab