From 742ec1baad857c49200d35f8e36d4b2492766d0a Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Thu, 3 Oct 2024 21:31:59 -0500 Subject: [PATCH] fixing additional completion insertion edge cases --- src/core/widgets/completion_view.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/core/widgets/completion_view.py b/src/core/widgets/completion_view.py index c6d286a..f40b97d 100644 --- a/src/core/widgets/completion_view.py +++ b/src/core/widgets/completion_view.py @@ -134,15 +134,10 @@ class CompletionView(Gtk.ScrolledWindow): pre_char = self.get_pre_char(siter) if completion_item.textEdit: - sline = completion_item.textEdit["range"]["start"]["line"] - schar = completion_item.textEdit["range"]["start"]["character"] - eline = completion_item.textEdit["range"]["end"]["line"] - echar = completion_item.textEdit["range"]["end"]["character"] - siter = buffer.get_iter_at_line_offset( sline, schar ) - eiter = buffer.get_iter_at_line_offset( eline, echar ) + self.process_range_insert(buffer, completion_item.textEdit, completion_item.newText) - buffer.delete(siter, eiter) - buffer.insert(siter, completion_item.newText, -1) + for edit in completion_item.additionalTextEdits: + self.process_range_insert(buffer, edit, edit["newText"]) source_view.remove(self) GLib.idle_add( source_view.grab_focus ) @@ -168,16 +163,21 @@ class CompletionView(Gtk.ScrolledWindow): buffer.delete(siter, eiter) buffer.insert(siter, completion_item.insertText, -1) - for edit in completion_item.additionalTextEdits: - print() - print() - print(edit) - print() - print() source_view.remove(self) GLib.idle_add( source_view.grab_focus ) + def process_range_insert(self, buffer, insert_data: {}, text: str): + sline = insert_data["range"]["start"]["line"] + schar = insert_data["range"]["start"]["character"] + eline = insert_data["range"]["end"]["line"] + echar = insert_data["range"]["end"]["character"] + siter = buffer.get_iter_at_line_offset( sline, schar ) + eiter = buffer.get_iter_at_line_offset( eline, echar ) + + buffer.delete(siter, eiter) + buffer.insert(siter, text, -1) + def get_word_start(self, iter): pre_char = self.get_pre_char(iter) while pre_char == '_':