From 7189d18bfe46bd5d9bcfc1c4c60b1438d0580e5b Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Fri, 30 May 2014 15:44:27 +0400 Subject: [PATCH] adjustable indentation --- dist/docs/readme.txt | 2 +- src/de/fernflower/main/DecompilerContext.java | 5 +++-- .../fernflower/main/extern/IFernflowerPreferences.java | 3 ++- src/de/fernflower/util/InterpreterUtil.java | 10 ++++++---- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/dist/docs/readme.txt b/dist/docs/readme.txt index b37c779..d598032 100644 --- a/dist/docs/readme.txt +++ b/dist/docs/readme.txt @@ -67,7 +67,7 @@ urc : full name of user-supplied class implementing IIdentifierRenamer. It is inn (1): check for IntelliJ IDEA-specific @NotNull annotation and remove inserted code if found lac (0): decompile lambda expressions to anonymous classes nls (0): define new line character to be used for output. 0 - '\r\n' (Windows), 1 - '\n' (Linux) - +ind : indentation string (default is " " (3 spaces)) The default logging level is INFO. This value can be overwritten by setting the option 'log' as follows: diff --git a/src/de/fernflower/main/DecompilerContext.java b/src/de/fernflower/main/DecompilerContext.java index 213898a..813f4ab 100644 --- a/src/de/fernflower/main/DecompilerContext.java +++ b/src/de/fernflower/main/DecompilerContext.java @@ -87,13 +87,14 @@ public class DecompilerContext { mapDefault.put(IFernflowerPreferences.REMOVE_EMPTY_RANGES, "1"); mapDefault.put(IFernflowerPreferences.NEW_LINE_SEPARATOR, "0"); - + mapDefault.put(IFernflowerPreferences.INDENT_STRING, " "); + mapDefault.put(IFernflowerPreferences.IDEA_NOT_NULL_ANNOTATION, "1"); if(propertiesCustom != null) { mapDefault.putAll(propertiesCustom); } - + currentContext.set(new DecompilerContext(mapDefault)); } diff --git a/src/de/fernflower/main/extern/IFernflowerPreferences.java b/src/de/fernflower/main/extern/IFernflowerPreferences.java index 3b923e7..2cc0cea 100644 --- a/src/de/fernflower/main/extern/IFernflowerPreferences.java +++ b/src/de/fernflower/main/extern/IFernflowerPreferences.java @@ -50,7 +50,8 @@ public interface IFernflowerPreferences { public static final String NEW_LINE_SEPARATOR = "nls"; public static final String IDEA_NOT_NULL_ANNOTATION = "inn"; public static final String LAMBDA_TO_ANONYMOUS_CLASS = "lac"; - + public static final String INDENT_STRING = "ind"; + public static final String LINE_SEPARATOR_WIN = "\r\n"; public static final String LINE_SEPARATOR_LIN = "\n"; } diff --git a/src/de/fernflower/util/InterpreterUtil.java b/src/de/fernflower/util/InterpreterUtil.java index b4ebbcc..ffba76a 100644 --- a/src/de/fernflower/util/InterpreterUtil.java +++ b/src/de/fernflower/util/InterpreterUtil.java @@ -25,10 +25,11 @@ import java.util.Collection; import java.util.HashSet; import java.util.List; +import de.fernflower.main.DecompilerContext; +import de.fernflower.main.extern.IFernflowerPreferences; + public class InterpreterUtil { - public static final String INDENT_STRING = " "; - public static void copyFile(File in, File out) throws IOException { FileChannel inChannel = new FileInputStream(in).getChannel(); FileChannel outChannel = new FileOutputStream(out).getChannel(); @@ -65,9 +66,10 @@ public class InterpreterUtil { } public static String getIndentString(int length) { - StringBuffer buf = new StringBuffer(); + String indent = (String) DecompilerContext.getProperty(IFernflowerPreferences.INDENT_STRING); + StringBuilder buf = new StringBuilder(); while(length-->0) { - buf.append(INDENT_STRING); + buf.append(indent); } return buf.toString(); }