This is an automated email from the ASF dual-hosted git repository. jpoth pushed a commit to branch CAMEL-21945 in repository https://gitbox.apache.org/repos/asf/camel.git
commit fc0f01023ef1efd4d0e84c4e691b9de9eb4630ae Author: John Poth <poth.j...@gmail.com> AuthorDate: Mon Apr 14 15:13:32 2025 +0200 CAMEL-21945 camel-jbang: upgrade camel-language-server, move cursor after insert --- .../jbang/core/commands/CamelNanoLspEditor.java | 64 +++++++++++++--------- parent/pom.xml | 2 +- 2 files changed, 39 insertions(+), 27 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelNanoLspEditor.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelNanoLspEditor.java index 1139888d099..ddef641eab6 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelNanoLspEditor.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelNanoLspEditor.java @@ -3190,33 +3190,45 @@ public class CamelNanoLspEditor implements Editor { } CompletionItem item = lines.get(this.suggestionBox.getSelected()); Either<TextEdit, InsertReplaceEdit> textEdit = item.getTextEdit(); - TextEdit left = textEdit.getLeft(); - Range range = left.getRange(); - Position start = range.getStart(); - int endLine = start.getLine(); - Position end = range.getEnd(); - int startLine = end.getLine(); - if (startLine == endLine) { + if (textEdit != null) { + TextEdit left = textEdit.getLeft(); + Range range = left.getRange(); + Position start = range.getStart(); + int endLine = start.getLine(); + Position end = range.getEnd(); + int startLine = end.getLine(); + if (startLine == endLine) { + StringBuilder newLine = new StringBuilder(); + String line = this.buffer.lines.get(startLine); + newLine.append(line, 0, start.getCharacter()); + newLine.append(left.getNewText()); + newLine.append(line.substring(end.getCharacter())); + this.buffer.lines.set(startLine, newLine.toString()); + this.buffer.moveRight(left.getNewText().length()); + } else { + // first line + StringBuilder newFirstLine = new StringBuilder(); + String oldFirstLine = this.buffer.lines.get(startLine); + String newText = left.getNewText(); + newFirstLine.append(oldFirstLine, 0, start.getCharacter()); + newFirstLine.append(newText, 0, oldFirstLine.length() - start.getCharacter()); + this.buffer.lines.set(startLine, newFirstLine.toString()); + // second line + StringBuilder newSecondLine = new StringBuilder(); + String oldSecondLine = this.buffer.lines.get(endLine); + newSecondLine.append(newText, oldFirstLine.length() - start.getCharacter(), end.getCharacter()); + newSecondLine.append(oldSecondLine, end.getCharacter(), end.getCharacter()); + this.buffer.lines.set(endLine, newSecondLine.toString()); + this.buffer.moveRight(left.getNewText().length()); + } + } else if (!Strings.isEmpty(item.getInsertText()) || !Strings.isEmpty(item.getLabel())) { + String insert = Strings.isEmpty(item.getInsertText()) ? item.getLabel() : item.getInsertText(); StringBuilder newLine = new StringBuilder(); - String line = this.buffer.lines.get(startLine); - newLine.append(line, 0, start.getCharacter()); - newLine.append(left.getNewText()); - newLine.append(line.substring(end.getCharacter())); - this.buffer.lines.set(startLine, newLine.toString()); - } else { - // first line - StringBuilder newFirstLine = new StringBuilder(); - String oldFirstLine = this.buffer.lines.get(startLine); - String newText = left.getNewText(); - newFirstLine.append(oldFirstLine, 0, start.getCharacter()); - newFirstLine.append(newText, 0, oldFirstLine.length() - start.getCharacter()); - this.buffer.lines.set(startLine, newFirstLine.toString()); - // second line - StringBuilder newSecondLine = new StringBuilder(); - String oldSecondLine = this.buffer.lines.get(endLine); - newSecondLine.append(newText, oldFirstLine.length() - start.getCharacter(), end.getCharacter()); - newSecondLine.append(oldSecondLine, end.getCharacter(), end.getCharacter()); - this.buffer.lines.set(endLine, newSecondLine.toString()); + String line = this.buffer.lines.get(buffer.line); + newLine.append(line, 0, buffer.offsetInLine + buffer.column); + newLine.append(insert); + this.buffer.lines.set(buffer.line, newLine.toString()); + this.buffer.moveRight(insert.length()); } this.buffer.dirty = true; } diff --git a/parent/pom.xml b/parent/pom.xml index bf5a7cd1509..13122b9ac88 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -90,7 +90,7 @@ <caffeine-version>3.2.0</caffeine-version> <californium-version>3.14.0</californium-version> <californium-scandium-version>3.11.0</californium-scandium-version> - <camel-lsp-version>1.30.0-SNAPSHOT</camel-lsp-version> + <camel-lsp-version>1.31.0</camel-lsp-version> <camunda-version>7.23.0</camunda-version> <cassandra-driver-version>4.19.0</cassandra-driver-version> <jta-api-1.2-version>1.2</jta-api-1.2-version>