Skip to content

Commit 86defc0

Browse files
committed
Simplify ViMode enum
1 parent f40ecaf commit 86defc0

File tree

5 files changed

+34
-36
lines changed

5 files changed

+34
-36
lines changed

Lib/_pyrepl/commands.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import os
2424
import time
2525

26-
from .types import ViMode
26+
from .types import VI_MODE_NORMAL
2727

2828
# Categories of actions:
2929
# killing
@@ -328,7 +328,7 @@ def do(self) -> None:
328328
for _ in range(r.get_arg()):
329329
p = r.pos + 1
330330
# In vi normal mode, don't move past the last character
331-
if r.vi_mode == ViMode.NORMAL:
331+
if r.vi_mode == VI_MODE_NORMAL:
332332
eol_pos = r.eol()
333333
max_pos = max(r.bol(), eol_pos - 1) if eol_pos > r.bol() else r.bol()
334334
if p <= max_pos:
@@ -351,7 +351,7 @@ class end_of_line(MotionCommand):
351351
def do(self) -> None:
352352
r = self.reader
353353
eol_pos = r.eol()
354-
if r.vi_mode == ViMode.NORMAL:
354+
if r.vi_mode == VI_MODE_NORMAL:
355355
bol_pos = r.bol()
356356
# Don't go past the last character (but stay at bol if line is empty)
357357
r.pos = max(bol_pos, eol_pos - 1) if eol_pos > bol_pos else bol_pos

Lib/_pyrepl/reader.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
MAX_VI_UNDO_STACK_SIZE = 100
4545

4646

47-
from .types import ViMode, ViFindState
47+
from .types import VI_MODE_INSERT, VI_MODE_NORMAL, ViFindState
4848

4949

5050
def make_default_syntax_table() -> dict[str, int]:
@@ -316,7 +316,7 @@ class Reader:
316316
can_colorize: bool = False
317317
threading_hook: Callback | None = None
318318
use_vi_mode: bool = False
319-
vi_mode: ViMode = ViMode.INSERT
319+
vi_mode: int = VI_MODE_INSERT
320320
vi_find: ViFindState = field(default_factory=ViFindState)
321321
undo_stack: list[ViUndoState] = field(default_factory=list)
322322

@@ -387,9 +387,9 @@ def __post_init__(self) -> None:
387387

388388
def collect_keymap(self) -> tuple[tuple[KeySpec, CommandName], ...]:
389389
if self.use_vi_mode:
390-
if self.vi_mode == ViMode.INSERT:
390+
if self.vi_mode == VI_MODE_INSERT:
391391
return vi_insert_keymap
392-
elif self.vi_mode == ViMode.NORMAL:
392+
elif self.vi_mode == VI_MODE_NORMAL:
393393
return vi_normal_keymap
394394
return default_keymap
395395

@@ -1084,10 +1084,10 @@ def get_unicode(self) -> str:
10841084
return "".join(self.buffer)
10851085

10861086
def enter_insert_mode(self) -> None:
1087-
if self.vi_mode == ViMode.INSERT:
1087+
if self.vi_mode == VI_MODE_INSERT:
10881088
return
10891089

1090-
self.vi_mode = ViMode.INSERT
1090+
self.vi_mode = VI_MODE_INSERT
10911091

10921092
if len(self.undo_stack) > MAX_VI_UNDO_STACK_SIZE:
10931093
self.undo_stack.pop(0)
@@ -1106,10 +1106,10 @@ def enter_insert_mode(self) -> None:
11061106
self.dirty = True
11071107

11081108
def enter_normal_mode(self) -> None:
1109-
if self.vi_mode == ViMode.NORMAL:
1109+
if self.vi_mode == VI_MODE_NORMAL:
11101110
return
11111111

1112-
self.vi_mode = ViMode.NORMAL
1112+
self.vi_mode = VI_MODE_NORMAL
11131113

11141114
# Switch translator to normal mode keymap
11151115
self.keymap = self.collect_keymap()

Lib/_pyrepl/types.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@
1212
type CharWidths = list[int]
1313

1414

15-
class ViMode(str, enum.Enum):
16-
INSERT = "insert"
17-
NORMAL = "normal"
15+
VI_MODE_INSERT = 0
16+
VI_MODE_NORMAL = 1
1817

1918

2019
class ViFindDirection(str, enum.Enum):

Lib/_pyrepl/unix_console.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,6 @@ def wait(self, timeout: float | None = None) -> bool:
458458
or bool(self.pollob.poll(timeout))
459459
)
460460

461-
462461
def set_cursor_vis(self, visible):
463462
"""
464463
Set the visibility of the cursor.

Lib/test/test_pyrepl/test_reader.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from .support import prepare_reader, prepare_console, prepare_vi_reader
1212
from _pyrepl.console import Event
1313
from _pyrepl.reader import Reader
14-
from _pyrepl.types import ViMode
14+
from _pyrepl.types import VI_MODE_INSERT, VI_MODE_NORMAL
1515
from _colorize import default_theme
1616

1717
overrides = {"reset": "z", "soft_keyword": "K"}
@@ -565,7 +565,7 @@ def test_vi_escape_switches_to_normal_mode(self):
565565
prepare_reader=prepare_vi_reader,
566566
)
567567
self.assertEqual(reader.get_unicode(), "hello")
568-
self.assertTrue(reader.vi_mode == ViMode.NORMAL)
568+
self.assertTrue(reader.vi_mode == VI_MODE_NORMAL)
569569
self.assertEqual(reader.pos, len("hello") - 2) # After 'h' left movement
570570

571571
def test_control_characters(self):
@@ -593,7 +593,7 @@ def test_insert_typing_and_ctrl_a_e(self):
593593
)
594594
reader, _ = self._run_vi(events)
595595
self.assertEqual(reader.get_unicode(), "Xhello!")
596-
self.assertTrue(reader.vi_mode == ViMode.INSERT)
596+
self.assertTrue(reader.vi_mode == VI_MODE_INSERT)
597597

598598
def test_escape_switches_to_normal_mode_and_is_idempotent(self):
599599
events = itertools.chain(
@@ -606,7 +606,7 @@ def test_escape_switches_to_normal_mode_and_is_idempotent(self):
606606
)
607607
reader, _ = self._run_vi(events)
608608
self.assertEqual(reader.get_unicode(), "hello")
609-
self.assertTrue(reader.vi_mode == ViMode.NORMAL)
609+
self.assertTrue(reader.vi_mode == VI_MODE_NORMAL)
610610
self.assertEqual(reader.pos, len("hello") - 2) # After 'h' left movement
611611

612612
def test_normal_mode_motion_and_edit_commands(self):
@@ -624,7 +624,7 @@ def test_normal_mode_motion_and_edit_commands(self):
624624
)
625625
reader, _ = self._run_vi(events)
626626
self.assertEqual(reader.get_unicode(), "hl!lo")
627-
self.assertTrue(reader.vi_mode == ViMode.NORMAL)
627+
self.assertTrue(reader.vi_mode == VI_MODE_NORMAL)
628628

629629
def test_open_below_and_above(self):
630630
events = itertools.chain(
@@ -652,9 +652,9 @@ def test_mode_resets_to_insert_on_prepare(self):
652652
],
653653
)
654654
reader, console = self._run_vi(events)
655-
self.assertTrue(reader.vi_mode == ViMode.NORMAL)
655+
self.assertTrue(reader.vi_mode == VI_MODE_NORMAL)
656656
reader.prepare()
657-
self.assertTrue(reader.vi_mode == ViMode.INSERT)
657+
self.assertTrue(reader.vi_mode == VI_MODE_INSERT)
658658
console.prepare.assert_called() # ensure console prepare called again
659659

660660
def test_translator_stack_preserves_mode(self):
@@ -667,7 +667,7 @@ def test_translator_stack_preserves_mode(self):
667667
],
668668
)
669669
reader, _ = self._run_vi(events_insert_path)
670-
self.assertTrue(reader.vi_mode == ViMode.INSERT)
670+
self.assertTrue(reader.vi_mode == VI_MODE_INSERT)
671671

672672
events_normal_path = itertools.chain(
673673
code_to_events("hello"),
@@ -678,7 +678,7 @@ def test_translator_stack_preserves_mode(self):
678678
],
679679
)
680680
reader, _ = self._run_vi(events_normal_path)
681-
self.assertTrue(reader.vi_mode == ViMode.NORMAL)
681+
self.assertTrue(reader.vi_mode == VI_MODE_NORMAL)
682682

683683
def test_insert_bol_and_append_eol(self):
684684
events = itertools.chain(
@@ -695,7 +695,7 @@ def test_insert_bol_and_append_eol(self):
695695
)
696696
reader, _ = self._run_vi(events)
697697
self.assertEqual(reader.get_unicode(), "[hello]")
698-
self.assertTrue(reader.vi_mode == ViMode.NORMAL)
698+
self.assertTrue(reader.vi_mode == VI_MODE_NORMAL)
699699

700700
def test_insert_mode_from_normal(self):
701701
events = itertools.chain(
@@ -711,7 +711,7 @@ def test_insert_mode_from_normal(self):
711711
)
712712
reader, _ = self._run_vi(events)
713713
self.assertEqual(reader.get_unicode(), "heXllo")
714-
self.assertTrue(reader.vi_mode == ViMode.INSERT)
714+
self.assertTrue(reader.vi_mode == VI_MODE_INSERT)
715715

716716
def test_hjkl_motions(self):
717717
events = itertools.chain(
@@ -727,7 +727,7 @@ def test_hjkl_motions(self):
727727
)
728728
reader, _ = self._run_vi(events)
729729
self.assertEqual(reader.get_unicode(), "hllo")
730-
self.assertTrue(reader.vi_mode == ViMode.NORMAL)
730+
self.assertTrue(reader.vi_mode == VI_MODE_NORMAL)
731731

732732
def test_dollar_end_of_line(self):
733733
events = itertools.chain(
@@ -770,7 +770,7 @@ def test_repeat_counts(self):
770770
)
771771
reader, _ = self._run_vi(events)
772772
self.assertEqual(reader.get_unicode(), "abcfghij")
773-
self.assertTrue(reader.vi_mode == ViMode.NORMAL)
773+
self.assertTrue(reader.vi_mode == VI_MODE_NORMAL)
774774

775775
def test_multiline_navigation(self):
776776
# Test j/k navigation across multiple lines
@@ -813,7 +813,7 @@ def test_escape_in_normal_mode_is_noop(self):
813813
],
814814
)
815815
reader, _ = self._run_vi(events)
816-
self.assertTrue(reader.vi_mode == ViMode.NORMAL)
816+
self.assertTrue(reader.vi_mode == VI_MODE_NORMAL)
817817
self.assertEqual(reader.get_unicode(), "hello")
818818

819819
def test_backspace_in_normal_mode(self):
@@ -826,7 +826,7 @@ def test_backspace_in_normal_mode(self):
826826
],
827827
)
828828
reader, _ = self._run_vi(events)
829-
self.assertTrue(reader.vi_mode == ViMode.NORMAL)
829+
self.assertTrue(reader.vi_mode == VI_MODE_NORMAL)
830830
self.assertIsNotNone(reader.get_unicode())
831831

832832
def test_end_of_word_motion(self):
@@ -1171,7 +1171,7 @@ def test_replace_char(self):
11711171
reader, _ = self._run_vi(events)
11721172
self.assertEqual("".join(reader.buffer), "heXlo")
11731173
self.assertEqual(reader.pos, 2) # cursor stays on replaced char
1174-
self.assertEqual(reader.vi_mode, ViMode.NORMAL) # stays in normal mode
1174+
self.assertEqual(reader.vi_mode, VI_MODE_NORMAL) # stays in normal mode
11751175

11761176
def test_undo_after_insert(self):
11771177
events = itertools.chain(
@@ -1183,7 +1183,7 @@ def test_undo_after_insert(self):
11831183
)
11841184
reader, _ = self._run_vi(events)
11851185
self.assertEqual(reader.get_unicode(), "")
1186-
self.assertEqual(reader.vi_mode, ViMode.NORMAL)
1186+
self.assertEqual(reader.vi_mode, VI_MODE_NORMAL)
11871187

11881188
def test_undo_after_delete_word(self):
11891189
events = itertools.chain(
@@ -1278,7 +1278,7 @@ def test_C_change_to_eol(self):
12781278
)
12791279
reader, _ = self._run_vi(events)
12801280
self.assertEqual(reader.get_unicode(), "hello there")
1281-
self.assertEqual(reader.vi_mode, ViMode.INSERT)
1281+
self.assertEqual(reader.vi_mode, VI_MODE_INSERT)
12821282

12831283
def test_s_substitute_char(self):
12841284
events = itertools.chain(
@@ -1292,7 +1292,7 @@ def test_s_substitute_char(self):
12921292
)
12931293
reader, _ = self._run_vi(events)
12941294
self.assertEqual(reader.get_unicode(), "jello")
1295-
self.assertEqual(reader.vi_mode, ViMode.INSERT)
1295+
self.assertEqual(reader.vi_mode, VI_MODE_INSERT)
12961296

12971297
def test_X_delete_char_before(self):
12981298
events = itertools.chain(
@@ -1304,7 +1304,7 @@ def test_X_delete_char_before(self):
13041304
)
13051305
reader, _ = self._run_vi(events)
13061306
self.assertEqual(reader.get_unicode(), "helo")
1307-
self.assertEqual(reader.vi_mode, ViMode.NORMAL)
1307+
self.assertEqual(reader.vi_mode, VI_MODE_NORMAL)
13081308

13091309
def test_dd_deletes_current_line(self):
13101310
events = itertools.chain(
@@ -1384,7 +1384,7 @@ def test_o_opens_line_below(self):
13841384
)
13851385
reader, _ = self._run_vi(events)
13861386
self.assertEqual(reader.get_unicode(), "first\nsecond\nthird")
1387-
self.assertEqual(reader.vi_mode, ViMode.INSERT)
1387+
self.assertEqual(reader.vi_mode, VI_MODE_INSERT)
13881388

13891389
def test_w_motion_crosses_lines(self):
13901390
events = itertools.chain(

0 commit comments

Comments
 (0)