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