diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeArea.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeArea.java index 743af2b06..658743a80 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeArea.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeArea.java @@ -71,6 +71,8 @@ public abstract class AbstractCodeArea extends RSyntaxTextArea { if (tokenMakerFactory instanceof AbstractTokenMakerFactory) { AbstractTokenMakerFactory atmf = (AbstractTokenMakerFactory) tokenMakerFactory; atmf.putMapping(SYNTAX_STYLE_SMALI, "jadx.gui.ui.codearea.SmaliTokenMaker"); + // use simple token maker instead default PlainTextTokenMaker to avoid parse errors + atmf.putMapping(SYNTAX_STYLE_NONE, "jadx.gui.ui.codearea.SimpleTokenMaker"); } else { throw new JadxRuntimeException("Unexpected TokenMakerFactory instance: " + tokenMakerFactory.getClass()); } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/SimpleTokenMaker.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/SimpleTokenMaker.java new file mode 100644 index 000000000..1c6f9627c --- /dev/null +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/SimpleTokenMaker.java @@ -0,0 +1,30 @@ +package jadx.gui.ui.codearea; + +import javax.swing.text.Segment; + +import org.fife.ui.rsyntaxtextarea.Token; +import org.fife.ui.rsyntaxtextarea.TokenImpl; +import org.fife.ui.rsyntaxtextarea.TokenMakerBase; +import org.fife.ui.rsyntaxtextarea.TokenTypes; + +/** + * Very simple token maker to use only one token per line without any parsing + */ +@SuppressWarnings("unused") // class registered by name in {@link AbstractCodeArea} +public class SimpleTokenMaker extends TokenMakerBase { + private final TokenImpl token; + + public SimpleTokenMaker() { + token = new TokenImpl(); + token.setType(TokenTypes.IDENTIFIER); + } + + @Override + public Token getTokenList(Segment segment, int initialTokenType, int startOffset) { + token.text = segment.array; + token.textOffset = startOffset; + token.textCount = segment.count; + token.setOffset(startOffset); + return token; + } +}