Skip to content

Commit 44c7d42

Browse files
committed
Turn search modes into an Enum
1 parent 741015e commit 44c7d42

File tree

1 file changed

+24
-16
lines changed

1 file changed

+24
-16
lines changed

bpython/curtsiesfrontend/repl.py

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@
8484
MAX_EVENTS_POSSIBLY_NOT_PASTE = 20
8585

8686

87+
class SearchMode(Enum):
88+
NO_SEARCH = 0
89+
INCREMENTAL_SEARCH = 1
90+
REVERSE_INCREMENTAL_SEARCH = 2
91+
92+
8793
class LineType(Enum):
8894
"""Used when adding a tuple to all_logical_lines, to get input / output values
8995
having to actually type/know the strings"""
@@ -452,9 +458,7 @@ def __init__(
452458
# whether auto reloading active
453459
self.watching_files = config.default_autoreload
454460

455-
# 'reverse_incremental_search', 'incremental_search' or None
456-
self.incr_search_mode = None
457-
461+
self.incr_search_mode = SearchMode.NO_SEARCH
458462
self.incr_search_target = ""
459463

460464
self.original_modules = set(sys.modules.keys())
@@ -758,7 +762,7 @@ def process_key_event(self, e: str) -> None:
758762
self.incremental_search()
759763
elif (
760764
e in (("<BACKSPACE>",) + key_dispatch[self.config.backspace_key])
761-
and self.incr_search_mode
765+
and self.incr_search_mode != SearchMode.NO_SEARCH
762766
):
763767
self.add_to_incremental_search(self, backspace=True)
764768
elif e in self.edit_keys.cut_buffer_edits:
@@ -808,7 +812,7 @@ def process_key_event(self, e: str) -> None:
808812
elif e in key_dispatch[self.config.edit_current_block_key]:
809813
self.send_current_block_to_external_editor()
810814
elif e in ("<ESC>",):
811-
self.incr_search_mode = None
815+
self.incr_search_mode = SearchMode.NO_SEARCH
812816
elif e in ("<SPACE>",):
813817
self.add_normal_character(" ")
814818
elif e in CHARACTER_PAIR_MAP.keys():
@@ -852,7 +856,11 @@ def insert_char_pair_start(self, e):
852856
if not can_lookup_next
853857
else self._current_line[self._cursor_offset]
854858
)
855-
if start_of_line or end_of_line or next_char in "})] ":
859+
if (
860+
start_of_line
861+
or end_of_line
862+
or (next_char is not None and next_char in "})] ")
863+
):
856864
self.add_normal_character(
857865
CHARACTER_PAIR_MAP[e], narrow_search=False
858866
)
@@ -891,7 +899,7 @@ def get_last_word(self):
891899
)
892900

893901
def incremental_search(self, reverse=False, include_current=False):
894-
if self.incr_search_mode is None:
902+
if self.incr_search_mode == SearchMode.NO_SEARCH:
895903
self.rl_history.enter(self.current_line)
896904
self.incr_search_target = ""
897905
else:
@@ -920,9 +928,9 @@ def incremental_search(self, reverse=False, include_current=False):
920928
clear_special_mode=False,
921929
)
922930
if reverse:
923-
self.incr_search_mode = "reverse_incremental_search"
931+
self.incr_search_mode = SearchMode.REVERSE_INCREMENTAL_SEARCH
924932
else:
925-
self.incr_search_mode = "incremental_search"
933+
self.incr_search_mode = SearchMode.INCREMENTAL_SEARCH
926934

927935
def readline_kill(self, e):
928936
func = self.edit_keys[e]
@@ -1172,7 +1180,7 @@ def toggle_file_watch(self):
11721180
def add_normal_character(self, char, narrow_search=True):
11731181
if len(char) > 1 or is_nop(char):
11741182
return
1175-
if self.incr_search_mode:
1183+
if self.incr_search_mode != SearchMode.NO_SEARCH:
11761184
self.add_to_incremental_search(char)
11771185
else:
11781186
self._set_current_line(
@@ -1209,9 +1217,9 @@ def add_to_incremental_search(self, char=None, backspace=False):
12091217
self.incr_search_target = self.incr_search_target[:-1]
12101218
else:
12111219
self.incr_search_target += char
1212-
if self.incr_search_mode == "reverse_incremental_search":
1220+
if self.incr_search_mode == SearchMode.REVERSE_INCREMENTAL_SEARCH:
12131221
self.incremental_search(reverse=True, include_current=True)
1214-
elif self.incr_search_mode == "incremental_search":
1222+
elif self.incr_search_mode == SearchMode.INCREMENTAL_SEARCH:
12151223
self.incremental_search(include_current=True)
12161224
else:
12171225
raise ValueError("add_to_incremental_search not in a special mode")
@@ -1419,7 +1427,7 @@ def current_line_formatted(self):
14191427
fs = bpythonparse(
14201428
pygformat(self.tokenize(self.current_line), self.formatter)
14211429
)
1422-
if self.incr_search_mode:
1430+
if self.incr_search_mode != SearchMode.NO_SEARCH:
14231431
if self.incr_search_target in self.current_line:
14241432
fs = fmtfuncs.on_magenta(self.incr_search_target).join(
14251433
fs.split(self.incr_search_target)
@@ -1467,12 +1475,12 @@ def display_line_with_prompt(self):
14671475
"""colored line with prompt"""
14681476
prompt = func_for_letter(self.config.color_scheme["prompt"])
14691477
more = func_for_letter(self.config.color_scheme["prompt_more"])
1470-
if self.incr_search_mode == "reverse_incremental_search":
1478+
if self.incr_search_mode == SearchMode.REVERSE_INCREMENTAL_SEARCH:
14711479
return (
14721480
prompt(f"(reverse-i-search)`{self.incr_search_target}': ")
14731481
+ self.current_line_formatted
14741482
)
1475-
elif self.incr_search_mode == "incremental_search":
1483+
elif self.incr_search_mode == SearchMode.INCREMENTAL_SEARCH:
14761484
return prompt(f"(i-search)`%s': ") + self.current_line_formatted
14771485
return (
14781486
prompt(self.ps1) if self.done else more(self.ps2)
@@ -1905,7 +1913,7 @@ def _set_cursor_offset(
19051913
if reset_rl_history:
19061914
self.rl_history.reset()
19071915
if clear_special_mode:
1908-
self.incr_search_mode = None
1916+
self.incr_search_mode = SearchMode.NO_SEARCH
19091917
self._cursor_offset = offset
19101918
if update_completion:
19111919
self.update_completion()

0 commit comments

Comments
 (0)