Llama-3.1-8B-DALv0.1
/
venv
/lib
/python3.12
/site-packages
/IPython
/terminal
/shortcuts
/auto_match.py
""" | |
Utilities function for keybinding with prompt toolkit. | |
This will be bound to specific key press and filter modes, | |
like whether we are in edit mode, and whether the completer is open. | |
""" | |
import re | |
from prompt_toolkit.key_binding import KeyPressEvent | |
def parenthesis(event: KeyPressEvent): | |
"""Auto-close parenthesis""" | |
event.current_buffer.insert_text("()") | |
event.current_buffer.cursor_left() | |
def brackets(event: KeyPressEvent): | |
"""Auto-close brackets""" | |
event.current_buffer.insert_text("[]") | |
event.current_buffer.cursor_left() | |
def braces(event: KeyPressEvent): | |
"""Auto-close braces""" | |
event.current_buffer.insert_text("{}") | |
event.current_buffer.cursor_left() | |
def double_quote(event: KeyPressEvent): | |
"""Auto-close double quotes""" | |
event.current_buffer.insert_text('""') | |
event.current_buffer.cursor_left() | |
def single_quote(event: KeyPressEvent): | |
"""Auto-close single quotes""" | |
event.current_buffer.insert_text("''") | |
event.current_buffer.cursor_left() | |
def docstring_double_quotes(event: KeyPressEvent): | |
"""Auto-close docstring (double quotes)""" | |
event.current_buffer.insert_text('""""') | |
event.current_buffer.cursor_left(3) | |
def docstring_single_quotes(event: KeyPressEvent): | |
"""Auto-close docstring (single quotes)""" | |
event.current_buffer.insert_text("''''") | |
event.current_buffer.cursor_left(3) | |
def raw_string_parenthesis(event: KeyPressEvent): | |
"""Auto-close parenthesis in raw strings""" | |
matches = re.match( | |
r".*(r|R)[\"'](-*)", | |
event.current_buffer.document.current_line_before_cursor, | |
) | |
dashes = matches.group(2) if matches else "" | |
event.current_buffer.insert_text("()" + dashes) | |
event.current_buffer.cursor_left(len(dashes) + 1) | |
def raw_string_bracket(event: KeyPressEvent): | |
"""Auto-close bracker in raw strings""" | |
matches = re.match( | |
r".*(r|R)[\"'](-*)", | |
event.current_buffer.document.current_line_before_cursor, | |
) | |
dashes = matches.group(2) if matches else "" | |
event.current_buffer.insert_text("[]" + dashes) | |
event.current_buffer.cursor_left(len(dashes) + 1) | |
def raw_string_braces(event: KeyPressEvent): | |
"""Auto-close braces in raw strings""" | |
matches = re.match( | |
r".*(r|R)[\"'](-*)", | |
event.current_buffer.document.current_line_before_cursor, | |
) | |
dashes = matches.group(2) if matches else "" | |
event.current_buffer.insert_text("{}" + dashes) | |
event.current_buffer.cursor_left(len(dashes) + 1) | |
def skip_over(event: KeyPressEvent): | |
"""Skip over automatically added parenthesis/quote. | |
(rather than adding another parenthesis/quote)""" | |
event.current_buffer.cursor_right() | |
def delete_pair(event: KeyPressEvent): | |
"""Delete auto-closed parenthesis""" | |
event.current_buffer.delete() | |
event.current_buffer.delete_before_cursor() | |
auto_match_parens = {"(": parenthesis, "[": brackets, "{": braces} | |
auto_match_parens_raw_string = { | |
"(": raw_string_parenthesis, | |
"[": raw_string_bracket, | |
"{": raw_string_braces, | |
} | |