From 88e43299231925abe862644ab9948010ecc7a080 Mon Sep 17 00:00:00 2001 From: Billy Date: Sat, 30 Mar 2024 07:00:30 +0530 Subject: [PATCH] feat: skip insertion if expected closing bracket is detected --- biscuit/core/components/editors/texteditor/text.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/biscuit/core/components/editors/texteditor/text.py b/biscuit/core/components/editors/texteditor/text.py index bb57e20e..b1a2892d 100644 --- a/biscuit/core/components/editors/texteditor/text.py +++ b/biscuit/core/components/editors/texteditor/text.py @@ -220,7 +220,13 @@ def close_bracket(self, e: tk.Event): i -= 1 if stack[-1] == ch: stack.pop() - if stack and stack[-1] == e.char: + if stack and stack[-1] == e.char: + # skip if next character is what we are closing + if c := self.get("insert", "insert+1c"): + if c == e.char: + self.mark_set(tk.INSERT, "insert+1c") + return "break" + self.insert(tk.INSERT, stack.pop(), self.base.theme.editors.bracket_colors[(i%3)] if i > -1 else 'red') else: self.insert(tk.INSERT, e.char, 'red') @@ -244,12 +250,10 @@ def complete_pair(self, e: tk.Event, tag=None): # if there is no selection, insert the character and move cursor inside the pair if tag: - self.insert(tk.INSERT, char, tag) - self.insert(tk.INSERT, " ") - self.insert(tk.INSERT, end, tag) + self.insert(tk.INSERT, char + end, tag) else: self.insert(tk.INSERT, char + end) - self.mark_set(tk.INSERT, "insert-2c") + self.mark_set(tk.INSERT, "insert-1c") return "break" def remove_pair(self, _: tk.Event):