diff --git a/app/src/main/java/com/termux/app/TermuxActivity.java b/app/src/main/java/com/termux/app/TermuxActivity.java index ba053a1e..c9d325f5 100644 --- a/app/src/main/java/com/termux/app/TermuxActivity.java +++ b/app/src/main/java/com/termux/app/TermuxActivity.java @@ -722,7 +722,7 @@ public final class TermuxActivity extends Activity implements ServiceConnection if (session != null) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); - String transcriptText = session.getEmulator().getScreen().getTranscriptText().trim(); + String transcriptText = session.getEmulator().getScreen().getTranscriptTextWithoutJoinedLines().trim(); // See https://github.com/termux/termux-app/issues/1166. final int MAX_LENGTH = 100_000; if (transcriptText.length() > MAX_LENGTH) { diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalBuffer.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalBuffer.java index b5002c70..4e6add83 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalBuffer.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalBuffer.java @@ -41,7 +41,15 @@ public final class TerminalBuffer { return getSelectedText(0, -getActiveTranscriptRows(), mColumns, mScreenRows).trim(); } + public String getTranscriptTextWithoutJoinedLines() { + return getSelectedText(0, -getActiveTranscriptRows(), mColumns, mScreenRows, false).trim(); + } + public String getSelectedText(int selX1, int selY1, int selX2, int selY2) { + return getSelectedText(selX1, selY1, selX2, selY2, true); + } + + public String getSelectedText(int selX1, int selY1, int selX2, int selY2, boolean joinBackLines) { final StringBuilder builder = new StringBuilder(); final int columns = mColumns; @@ -79,7 +87,8 @@ public final class TerminalBuffer { } if (lastPrintingCharIndex != -1) builder.append(line, x1Index, lastPrintingCharIndex - x1Index + 1); - if (!rowLineWrap && row < selY2 && row < mScreenRows - 1) builder.append('\n'); + if ((!joinBackLines || !rowLineWrap) + && row < selY2 && row < mScreenRows - 1) builder.append('\n'); } return builder.toString(); }