|
|
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.
|
|
|
|
|
|
(rather than adding another parenthesis)"""
|
|
|
event.current_buffer.cursor_right()
|
|
|
|
|
|
|
|
|
def delete_pair(event: KeyPressEvent):
|
|
|
"""Delete auto-closed parenthesis"""
|
|
|
event.current_buffer.delete()
|
|
|
event.current_buffer.delete_before_cursor()
|
|
|
|