From c08b42d6dcc31f136e556d9ca2c7549f638ea1bd Mon Sep 17 00:00:00 2001 From: Weston Vial Date: Wed, 26 Aug 2015 15:39:12 -0400 Subject: [PATCH] Fix bug #548 - Transpose when empty line crashes --- bpython/curtsiesfrontend/manual_readline.py | 6 ++++-- bpython/test/test_manual_readline.py | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/bpython/curtsiesfrontend/manual_readline.py b/bpython/curtsiesfrontend/manual_readline.py index 02c7cbf03..24a1b9a27 100644 --- a/bpython/curtsiesfrontend/manual_readline.py +++ b/bpython/curtsiesfrontend/manual_readline.py @@ -280,11 +280,13 @@ def yank_prev_killed_text(cursor_offset, line, cut_buffer): @edit_keys.on(config='transpose_chars_key') def transpose_character_before_cursor(cursor_offset, line): + if cursor_offset == 0: + return cursor_offset, line return (min(len(line), cursor_offset + 1), - line[:cursor_offset-1] + + line[:cursor_offset - 1] + (line[cursor_offset] if len(line) > cursor_offset else '') + line[cursor_offset - 1] + - line[cursor_offset+1:]) + line[cursor_offset + 1:]) @edit_keys.on('') diff --git a/bpython/test/test_manual_readline.py b/bpython/test/test_manual_readline.py index 6ef610638..f1e24b780 100644 --- a/bpython/test/test_manual_readline.py +++ b/bpython/test/test_manual_readline.py @@ -201,6 +201,16 @@ def test_transpose_character_before_cursor(self): "adf s|asdf", "adf as|sdf"], transpose_character_before_cursor) + def test_transpose_empty_line(self): + self.assertEquals(transpose_character_before_cursor(0, ''), + (0,'')) + + def test_transpose_first_character(self): + self.assertEquals(transpose_character_before_cursor(0, 'a'), + transpose_character_before_cursor(0, 'a')) + self.assertEquals(transpose_character_before_cursor(0, 'as'), + transpose_character_before_cursor(0, 'as')) + def test_transpose_word_before_cursor(self): pass