From 0423f2b0de5440fd9775b2fd518496a81c711d2b Mon Sep 17 00:00:00 2001 From: ErisianArchitect Date: Tue, 10 Dec 2024 22:50:15 -0800 Subject: [PATCH] Added delete_selection --- src/prompt_toolkit/document.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/prompt_toolkit/document.py b/src/prompt_toolkit/document.py index df5293e62..050d3d474 100644 --- a/src/prompt_toolkit/document.py +++ b/src/prompt_toolkit/document.py @@ -1036,6 +1036,32 @@ def cut_selection(self) -> tuple[Document, ClipboardData]: else: return self, ClipboardData("") + def delete_selection(self) -> Document: + """ + Returns :class:`.Document` where the + document represents the new document when the selection is deleted. + """ + if self.selection: + # cut_parts = [] + remaining_parts = [] + new_cursor_position = self.cursor_position + + last_to = 0 + for from_, to in self.selection_ranges(): + if last_to == 0: + new_cursor_position = from_ + + remaining_parts.append(self.text[last_to:from_]) + last_to = to + + remaining_parts.append(self.text[last_to:]) + + remaining_text = "".join(remaining_parts) + + return Document(text=remaining_text, cursor_position=new_cursor_position) + else: + return self + def paste_clipboard_data( self, data: ClipboardData,