Auto-Formatting (autopep8, black, yapf) Doesn't Work On Unsaved Files
See original GitHub issueEnvironment data
- VS Code version: 1.25.1
- Extension version (available under the Extensions sidebar): 2018.7.1
- OS and version: Ubuntu 18.04
- Python version (& distribution if applicable, e.g. Anaconda): Python 2.7.15rc1 and Python 3.6.5
- Type of virtual environment used (N/A | venv | virtualenv | conda | …): N/A
- Relevant/affected Python packages and their versions: autopep8 1.3.5 (pycodestyle: 2.4.0), black version 18.6b4, yapf 0.22.0
Actual behavior
Working with Python code in an unsaved file, executing the command editor.action.formatDocument
has no effect on the text. The status bar briefly flashes to say that the formatter was run.
If you then save the document and run the same command, the formatter runs and edits the text as normal.
Expected behavior
Working with Python code in an unsaved file, editor.action.formatDocument
will run the associated Python formatter (yapf, autopep8) and edit the text inline using default style settings.
Steps to reproduce:
- Open a new file. (
File->New
, orCtrl+N
by default.) - Paste a large Python dict into the file on a single line. For instance:
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24, 25: 25, 26: 26, 27: 27, 28: 28, 29: 29, 30: 30, 31: 31, 32: 32, 33: 33, 34: 34, 35: 35, 36: 36, 37: 37, 38: 38, 39: 39, 40: 40, 41: 41, 42: 42, 43: 43, 44: 44, 45: 45, 46: 46, 47: 47, 48: 48, 49: 49, 50: 50, 51: 51, 52: 52, 53: 53, 54: 54, 55: 55, 56: 56, 57: 57, 58: 58, 59: 59, 60: 60, 61: 61, 62: 62, 63: 63, 64: 64, 65: 65, 66: 66, 67: 67, 68: 68, 69: 69, 70: 70, 71: 71, 72: 72, 73: 73, 74: 74, 75: 75, 76: 76, 77: 77, 78: 78, 79: 79, 80: 80, 81: 81, 82: 82, 83: 83, 84: 84, 85: 85, 86: 86, 87: 87, 88: 88, 89: 89, 90: 90, 91: 91, 92: 92, 93: 93, 94: 94, 95: 95, 96: 96, 97: 97, 98: 98, 99: 99}
- Open the language picker (
Command Palette->Change Language Mode
, orCtrl+K M
* by default) and select Python. - Execute the
editor.action.formatDocument
command (Command Palette->Format Document
, orCtrl+Shift+I
by default) - Note that the status bar briefly flashes the name of your set code formatter, but the document doesn’t change.
- Save the file. (
File->Save
, orCtrl+S
by default.) - Repeat step 4.
- Note that now the document is actually formatted.
- (Optional) Change formatter and repeat steps 1-8.
- (Optional) Change Python interpreter and repeat steps 1-9.
*: This default keybind doesn’t actually work for me, instead launching a search in the Extensions Marketplace for @recommended:keymaps
.
Logs
Output for Python
in the Output
panel (View
→Output
, change the drop-down the upper-right of the Output
panel to Python
)
Output from Console
under the Developer Tools
panel (toggle Developer Tools on under Help
)
Issue Analytics
- State:
- Created 5 years ago
- Comments:8 (1 by maintainers)
@DonJayamanne - I just tried
Right Click->Format Document
to the same effect as described above: nothing changed in the unsaved document, but after saving the document the command works correctly.EDIT2: Screen capture with less graphical tearing.
We decided that this is not currently a priority for us, but we would happily look at a PR to implement this if someone provided one.