[Python-checkins] cpython: Issue #19198: IDLE: tab after initial whitespace should tab, not autocomplete.
terry.reedy
python-checkins at python.org
Sun Jul 24 23:01:48 EDT 2016
https://hg.python.org/cpython/rev/128ad410c776
changeset: 102445:128ad410c776
user: Terry Jan Reedy <tjreedy at udel.edu>
date: Sun Jul 24 23:01:28 2016 -0400
summary:
Issue #19198: IDLE: tab after initial whitespace should tab, not autocomplete.
Fixes problem with writing docstrings at lease twice indented.
files:
Lib/idlelib/autocomplete.py | 9 +++++----
Lib/idlelib/autocomplete_w.py | 5 ++---
Lib/idlelib/idle_test/test_autocomplete.py | 5 +++++
3 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/Lib/idlelib/autocomplete.py b/Lib/idlelib/autocomplete.py
--- a/Lib/idlelib/autocomplete.py
+++ b/Lib/idlelib/autocomplete.py
@@ -78,16 +78,17 @@
open a completion list after that (if there is more than one
completion)
"""
- if hasattr(event, "mc_state") and event.mc_state:
- # A modifier was pressed along with the tab, continue as usual.
+ if hasattr(event, "mc_state") and event.mc_state or\
+ not self.text.get("insert linestart", "insert").strip():
+ # A modifier was pressed along with the tab or
+ # there is only previous whitespace on this line, so tab.
return None
if self.autocompletewindow and self.autocompletewindow.is_active():
self.autocompletewindow.complete()
return "break"
else:
opened = self.open_completions(False, True, True)
- if opened:
- return "break"
+ return "break" if opened else None
def _open_completions_later(self, *args):
self._delayed_completion_index = self.text.index("insert")
diff --git a/Lib/idlelib/autocomplete_w.py b/Lib/idlelib/autocomplete_w.py
--- a/Lib/idlelib/autocomplete_w.py
+++ b/Lib/idlelib/autocomplete_w.py
@@ -240,9 +240,8 @@
acw.wm_geometry("+%d+%d" % (new_x, new_y))
def hide_event(self, event):
- if not self.is_active():
- return
- self.hide_window()
+ if self.is_active():
+ self.hide_window()
def listselect_event(self, event):
if self.is_active():
diff --git a/Lib/idlelib/idle_test/test_autocomplete.py b/Lib/idlelib/idle_test/test_autocomplete.py
--- a/Lib/idlelib/idle_test/test_autocomplete.py
+++ b/Lib/idlelib/idle_test/test_autocomplete.py
@@ -97,6 +97,11 @@
self.assertIsNone(autocomplete.autocomplete_event(ev))
del ev.mc_state
+ # Test that tab after whitespace is ignored.
+ self.text.insert('1.0', ' """Docstring.\n ')
+ self.assertIsNone(autocomplete.autocomplete_event(ev))
+ self.text.delete('1.0', 'end')
+
# If autocomplete window is open, complete() method is called
self.text.insert('1.0', 're.')
# This must call autocomplete._make_autocomplete_window()
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list