Skip to content

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

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

Closed
CoryOwens opened this issue Jul 27, 2018 · 8 comments
Closed
Labels
area-formatting feature-request Request for new features or functionality

Comments

@CoryOwens
Copy link

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)

 
@brettcannon brettcannon added feature-request Request for new features or functionality area-formatting needs decision labels Jul 27, 2018
@weqopy
Copy link

weqopy commented Jul 30, 2018

I have met the same situation.
It seems like that the command only works on the file have saved before.

@DonJayamanne DonJayamanne added bug Issue identified by VS Code Team member as probable bug needs verification and removed needs decision feature-request Request for new features or functionality labels Jul 31, 2018
@DonJayamanne
Copy link

@brettcannon Today we save the file temporarily and then format the file.
If this doesn't work correctly its a bug.

@DonJayamanne
Copy link

DonJayamanne commented Jul 31, 2018

@CoryOwens @weqopy
Please could you try right clicking on the file and using the menu option Format Document?

This works for me as expected.
Also, please confirm there are no errors in the Python output panel and the console window.

@DonJayamanne DonJayamanne added info-needed Issue requires more information from poster and removed needs verification labels Jul 31, 2018
@CoryOwens
Copy link
Author

CoryOwens commented 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

@DonJayamanne
Copy link

DonJayamanne commented Aug 3, 2018

Ok, this is different. I tested this on a dirty document.
This was never supported.
@brettcannon your initial assessment of the issue was correct.

@DonJayamanne DonJayamanne added feature-request Request for new features or functionality needs decision and removed info-needed Issue requires more information from poster bug Issue identified by VS Code Team member as probable bug labels Aug 3, 2018
@Nate-Wilkins
Copy link

Nate-Wilkins commented Sep 20, 2018

Came across the same issue. Looks like #730 is related and #845 tried to fix this but it's still a problem with the scenario above.

@CoryOwens
Copy link
Author

@Nate-Wilkins - I just tested it, and this bug still appears to exist.

The fix you referenced was merged back in February (whereas I reported this bug in July), and it appears to change how python finds the home directory, rather than how it handles formatting temp files.

@brettcannon
Copy link
Member

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.

@lock lock bot locked as resolved and limited conversation to collaborators Oct 22, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-formatting feature-request Request for new features or functionality
Projects
None yet
Development

No branches or pull requests

5 participants