java: fix some indexing errors in perform_change

This commit is contained in:
Adrian Kuschelyagi Malacoda 2020-11-08 19:11:17 -06:00
parent cd23269643
commit 49d673b0b8

9
java
View File

@ -23,7 +23,7 @@ class Java(LspServer):
self.path = arguments[0] self.path = arguments[0]
super().__init__([ super().__init__([
"java", "java",
f"-javaagent:{locate_lombok}", f"-javaagent:{locate_lombok()}",
"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044",
"-Declipse.application=org.eclipse.jdt.ls.core.id1", "-Declipse.application=org.eclipse.jdt.ls.core.id1",
"-Dosgi.bundles.defaultStartLevel=4", "-Dosgi.bundles.defaultStartLevel=4",
@ -40,7 +40,7 @@ class Java(LspServer):
@command("java.apply.workspaceEdit") @command("java.apply.workspaceEdit")
def workspaceEdit (self, arguments): def workspaceEdit (self, arguments):
print(f"we {arguments}") print(f"we {arguments}", file=sys.stderr)
for argument in arguments: for argument in arguments:
for file_name, changes in argument['changes'].items(): for file_name, changes in argument['changes'].items():
file_name = file_name[len(FILE_URI):] file_name = file_name[len(FILE_URI):]
@ -59,11 +59,12 @@ class Java(LspServer):
def get_character_offset (file_contents, line, character): def get_character_offset (file_contents, line, character):
line_pos = 0 line_pos = 0
while line > 0: while line > 0:
line_pos = file_contents.index("\n", line_pos + 1) line_pos = file_contents.index("\n", line_pos) + 1
line = line - 1 line = line - 1
return line_pos + character return line_pos + character
def perform_change (file_text, change): def perform_change (file_text, change):
change_start = get_character_offset(file_text, change['range']['start']['character'], change['range']['start']['character']) change_start = get_character_offset(file_text, change['range']['start']['line'], change['range']['start']['character'])
change_end = get_character_offset(file_text, change['range']['end']['line'], change['range']['end']['character']) change_end = get_character_offset(file_text, change['range']['end']['line'], change['range']['end']['character'])
print(f"change {change_start} {change['newText']} {change_end}", file=sys.stderr)
return file_text[:change_start] + change['newText'] + file_text[change_end:] return file_text[:change_start] + change['newText'] + file_text[change_end:]