Skip to content

Commit 7c92d9a

Browse files
authored
Apply suggestions from code review
1 parent 338e2fc commit 7c92d9a

File tree

2 files changed

+7
-81
lines changed

2 files changed

+7
-81
lines changed

Lib/idlelib/editor.py

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,24 +1338,6 @@ def set_indentation_params(self, is_py_src, guess=True):
13381338
self.usetabs = False
13391339
self.set_tk_tabwidth(self.tabwidth)
13401340

1341-
def delete_trail_char_and_space(self, want, chars, tabwidth):
1342-
chars = chars[:-1] # remove last character unconditionally
1343-
current_pos = 0
1344-
ncharsretained = 0
1345-
for char in chars:
1346-
if char == '\t':
1347-
current_pos = (current_pos // tabwidth + 1) * tabwidth
1348-
else:
1349-
current_pos += 1
1350-
if current_pos > want:
1351-
break
1352-
ncharsretained += 1
1353-
for i in range(ncharsretained, len(chars)):
1354-
if chars[i] not in " \t":
1355-
ncharsretained = i + 1
1356-
chars = chars[:ncharsretained]
1357-
return chars
1358-
13591341
def smart_backspace_event(self, event):
13601342
text = self.text
13611343
first, last = self.get_selection_indices()
@@ -1384,10 +1366,13 @@ def smart_backspace_event(self, event):
13841366
assert have > 0
13851367
want = ((have - 1) // self.indentwidth) * self.indentwidth
13861368
# Debug prompt is multilined....
1387-
oldchars = chars
1388-
chars = self.delete_trail_char_and_space(want, chars, tabwidth)
1389-
ncharsdeleted = len(oldchars) - len(chars)
1390-
have = len(chars.expandtabs(tabwidth))
1369+
ncharsdeleted = 0
1370+
while True:
1371+
chars = chars[:-1]
1372+
ncharsdeleted = ncharsdeleted + 1
1373+
have = len(chars.expandtabs(tabwidth))
1374+
if have <= want or chars[-1] not in " \t":
1375+
break
13911376
text.undo_block_start()
13921377
text.delete("insert-%dc" % ncharsdeleted, "insert")
13931378
if have < want:

Lib/idlelib/idle_test/test_editor.py

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -238,64 +238,5 @@ def test_rclick(self):
238238
pass
239239

240240

241-
class DeleteWantTest(unittest.TestCase):
242-
243-
data = [
244-
("abcde" + 10000 * "\t" + 10000 * " ", [
245-
(30000, 4, "abcde" + 7499 * "\t"),
246-
(41005, 4, "abcde" + 10000 * "\t" + 1001 * " "),
247-
(3, 4, "abcde"),
248-
(6, 4, "abcde"),
249-
(30002, 4, "abcde" + 7499 * "\t"),
250-
]),
251-
("abcde\tabd\t\t", [
252-
(7, 4, "abcde\tabd"),
253-
(12, 4, "abcde\tabd\t"),
254-
(13, 4, "abcde\tabd\t"),
255-
(16, 4, "abcde\tabd\t"),
256-
]),
257-
("abcde\tabd\t \ta", [
258-
(7, 4, "abcde\tabd"),
259-
(12, 4, "abcde\tabd\t"),
260-
(13, 4, "abcde\tabd\t "),
261-
(16, 4, "abcde\tabd\t \t"),
262-
]),
263-
(" ", [
264-
(2, 2, " "),
265-
]),
266-
]
267-
268-
def mock_delete_trail_char_and_space(self, want, chars, tabwidth):
269-
ncharsdeleted = 0
270-
while True:
271-
chars = chars[:-1]
272-
ncharsdeleted = ncharsdeleted + 1
273-
have = len(chars.expandtabs(tabwidth))
274-
if have <= want or chars[-1] not in " \t":
275-
break
276-
return chars
277-
278-
def do_tests(self):
279-
ew = Editor()
280-
for dat in self.data:
281-
test_str = dat[0]
282-
for da in dat[1]:
283-
with self.subTest(want=da[0], tabwidth=da[1], input=test_str):
284-
res = ew.delete_trail_char_and_space(da[0], test_str, da[1])
285-
self.assertEqual(res, da[2])
286-
287-
def test_delete_trail_char_and_space(self):
288-
with unittest.mock.patch.object(Editor, '__init__', return_value=None):
289-
initial_time_new = time.time()
290-
self.do_tests()
291-
time_new = time.time() - initial_time_new
292-
293-
with unittest.mock.patch.object(Editor, 'delete_trail_char_and_space', self.mock_delete_trail_char_and_space):
294-
initial_time_old = time.time()
295-
self.do_tests()
296-
time_old = time.time() - initial_time_old
297-
298-
self.assertGreaterEqual(time_old / time_new, 10)
299-
300241
if __name__ == '__main__':
301242
unittest.main(verbosity=2)

0 commit comments

Comments
 (0)