123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- """
- 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,
- }
|