diff --git a/jode/ChangeLog b/jode/ChangeLog index 9e801b3..8082d05 100644 --- a/jode/ChangeLog +++ b/jode/ChangeLog @@ -1,3 +1,9 @@ +2001-02-27 Jochen Hoenicke + + * jode/swingui/Main.java.in (AreaWriter): Convert all kinds of + line breaks (CR+LF, CR, LF) to a LF character, which a JTextArea + understands. + 2001-02-08 Jochen Hoenicke * jode/expr/StoreInstruction.java (dumpExpression): Java doesn't diff --git a/jode/jode/swingui/Main.java.in b/jode/jode/swingui/Main.java.in index a69bee0..c93da48 100644 --- a/jode/jode/swingui/Main.java.in +++ b/jode/jode/swingui/Main.java.in @@ -143,6 +143,7 @@ public class Main public class AreaWriter extends Writer { boolean initialized = false; + boolean lastCR = false; private JTextArea area; public AreaWriter(JTextArea a) { @@ -155,7 +156,23 @@ public class Main area.setText(""); initialized = true; } - area.append(new String(b, off, len)); + String str = new String(b, off, len); + StringBuffer sb = new StringBuffer(len); + while (str != null && str.length() > 0) { + if (lastCR && str.charAt(0) == '\n') + str = str.substring(1); + int crIndex = str.indexOf('\r'); + if (crIndex >= 0) { + sb.append(str.substring(0, crIndex)); + sb.append("\n"); + str = str.substring(crIndex+1); + lastCR = true; + } else { + sb.append(str); + str = null; + } + } + area.append(sb.toString()); } public void flush() {