From ed76cd41d2764d6c5d3ef03449723579af9a2197 Mon Sep 17 00:00:00 2001 From: Kevin Lamonte Date: Wed, 13 Nov 2019 01:25:53 -0600 Subject: [PATCH] retrofit --- build.xml | 6 ++- src/jexer/TEditorWidget.java | 89 ++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/build.xml b/build.xml index 2e861676..0bdf890e 100644 --- a/build.xml +++ b/build.xml @@ -62,7 +62,11 @@ - + + + + + diff --git a/src/jexer/TEditorWidget.java b/src/jexer/TEditorWidget.java index 290fa361..7798ad84 100644 --- a/src/jexer/TEditorWidget.java +++ b/src/jexer/TEditorWidget.java @@ -791,6 +791,17 @@ public class TEditorWidget extends TWidget implements EditMenuUser { return document.getLineLengthMax() + 1; } + /** + * Get the current editing row plain text. 1-based. + * + * @param row the editing row number. Row 1 is the first row. + * @return the plain text of the row + */ + public String getEditingRawLine(final int row) { + Line line = document.getLine(row - 1); + return line.getRawString(); + } + /** * Get the dirty value. * @@ -800,6 +811,13 @@ public class TEditorWidget extends TWidget implements EditMenuUser { return document.isDirty(); } + /** + * Unset the dirty flag. + */ + public void setNotDirty() { + document.setNotDirty(); + } + /** * Save contents to file. * @@ -980,6 +998,77 @@ public class TEditorWidget extends TWidget implements EditMenuUser { getClipboard().copyText(sb.toString()); } + /** + * Set the selection. + * + * @param startRow the starting row number. 0-based: row 0 is the first + * row. + * @param startColumn the starting column number. 0-based: column 0 is + * the first column. + * @param endRow the ending row number. 0-based: row 0 is the first row. + * @param endColumn the ending column number. 0-based: column 0 is the + * first column. + */ + public void setSelection(final int startRow, final int startColumn, + final int endRow, final int endColumn) { + + inSelection = true; + selectionLine0 = startRow; + selectionColumn0 = startColumn; + selectionLine1 = endRow; + selectionColumn1 = endColumn; + } + + /** + * Unset the selection. + */ + public void unsetSelection() { + inSelection = false; + } + + /** + * Replace whatever is being selected with new text. If not in + * selection, nothing is replaced. + * + * @param text the new replacement text + */ + public void replaceSelection(final String text) { + if (!inSelection) { + return; + } + + // Delete selected text, then paste text from clipboard. + deleteSelection(); + + for (int i = 0; i < text.length(); ) { + int ch = text.codePointAt(i); + onKeypress(new TKeypressEvent(false, 0, ch, false, false, + false)); + i += Character.charCount(ch); + } + } + + /** + * Get the entire contents of the editor as one string. + * + * @return the editor contents + */ + public String getText() { + return document.getText(); + } + + /** + * Set the entire contents of the editor from one string. + * + * @param text the new contents + */ + public void setText(final String text) { + document = new Document(text, defaultColor); + unsetSelection(); + topLine = 0; + leftColumn = 0; + } + // ------------------------------------------------------------------------ // EditMenuUser ----------------------------------------------------------- // ------------------------------------------------------------------------ -- 2.27.0