New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IDLE regression: toggle tabs and change indent width functions #82817
Comments
In the latest Python 3.8.0 installation when running IDLE on Windows, pressing "Alt + T" generates the following error: Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\Python38\Lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:\Program Files\Python38\Lib\idlelib\multicall.py", line 176, in handler
r = l[i](event)
TypeError: toggle_tabs_event() missing 1 required positional argument: 'event' Similarly, pressing "Alt + U" will generate a very similar error: Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\Python38\Lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:\Program Files\Python38\Lib\idlelib\multicall.py", line 176, in handler
r = l[i](event)
TypeError: change_indentwidth_event() missing 1 required positional argument: 'event' |
Both the menu items and the short cuts for these two functions on the Format menu give these call errors. They are only visible if IDLE is started from a console. They work in 3.6; the regression is due to bpo-36390. These 2 functions were moved separately from the others in the 3rd PR, PR 14827, changeset 1b38922. I found the mistake and believe I have one possible version of a working fix on a new branch. The diff contains this comment: |
When I start IDLE and the shell window appears, my first task is to press "Alt + T" to change from using tabs to spaces and then "Alt + U" to change from using 8 spaces to 4. This allows code pasted from the shell into an editor window or other IDE to not require reformatting since those settings seem to be common for Python code. If the defaults for these settings were to be exposed in IDLE's settings under the General tab (maybe near the new "Show line numbers in new windows" checkbox), would it be best to make that request here or to open a new bug with an enhancement suggestion? |
Interesting. The result of making these changes is legal code looking like
>>> if a:
if b:
c = 3
This has been proposed as the way Shell should work, but rejected as likely too confusing to beginners as the indented code does not look indented compared to the line above. The use of tabs for indents in Shell has long been considered a wart that is a 'least bad solution'. Please hold your proposals. I intend to solve the issue by moving the prompt to a shell sidebar and use the same indent in shell as in editors. bpo-37903 has a PR under review. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: