question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Auto-Formatting (autopep8, black, yapf) Doesn't Work On Unsaved Files

See original GitHub issue

Environment 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:

  1. Open a new file. (File->New, or Ctrl+N by default.)
  2. 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}
  3. Open the language picker (Command Palette->Change Language Mode, or Ctrl+K M* by default) and select Python.
  4. Execute the editor.action.formatDocument command (Command Palette->Format Document, or Ctrl+Shift+I by default)
  5. Note that the status bar briefly flashes the name of your set code formatter, but the document doesn’t change.
  6. Save the file. (File->Save, or Ctrl+S by default.)
  7. Repeat step 4.
  8. Note that now the document is actually formatted.
  9. (Optional) Change formatter and repeat steps 1-8.
  10. (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 (ViewOutput, 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:closed
  • Created 5 years ago
  • Comments:8 (1 by maintainers)

github_iconTop GitHub Comments

1reaction
CoryOwenscommented, Jul 31, 2018

@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.

code_format

0reactions
brettcannoncommented, Sep 24, 2018

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.

Read more comments on GitHub >

github_iconTop Results From Across the Web

VS code python formatter not working(autopep8, black, yapf)
I am using VS Code 1.60 on macbook pro, Big Sur 11.4 with python 3.9.7. I have installed Python(Microsoft) extension for formatting.
Read more >
Nate-Wilkins - Profile - Bountysource
Nate-Wilkins commented on this issueAuto-Formatting (autopep8, black, yapf) Doesn't Work On Unsaved Files. Microsoft 3 years ago.
Read more >
Coc-python NPM | npm.io
Possible options include 'autopep8', 'black', and 'yapf'., default: "autopep8"; python.formatting.blackArgs :Arguments passed in.
Read more >
Black vs yapf vs ??? : r/Python - Reddit
autopep8 works for that. Black fails #1. For instance, you can't configure PyCharm to autoformat to Black's satisfaction. I don't want to be ......
Read more >
Beginners Guide to Auto Formatting - DEV Community ‍ ‍
“Black is opinionated, so you don't need to be.” sum everything up pretty well. Other tools like autopep8 and yapf provide much more ......
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found