Skip to content
This repository was archived by the owner on Apr 14, 2022. It is now read-only.

Indent when doing line breaks #385

Closed
DonJayamanne opened this issue Nov 12, 2018 · 13 comments
Closed

Indent when doing line breaks #385

DonJayamanne opened this issue Nov 12, 2018 · 13 comments

Comments

@DonJayamanne
Copy link

From @qubitron on November 9, 2018 20:23

Feedback from twitter here: https://twitter.com/amuellerml/status/1060895092230291457

Actual behavior

a = 1 + \
<--- indent is here

Expected behavior

a = 1 + \
    <--- indent is here

Copied from original issue: microsoft/vscode-python#3284

@DonJayamanne
Copy link
Author

From @amueller on November 10, 2018 20:55

duplicate of #481?

@DonJayamanne
Copy link
Author

Not a dup

@DonJayamanne
Copy link
Author

From @amueller on November 11, 2018 1:1

Hmm I guess this is a separate case that's not listed?

@DonJayamanne
Copy link
Author

From @cbrnr on November 12, 2018 8:5

#481 is certainly related because it also concerns proper PEP8-style indentation.

@jakebailey
Copy link
Member

jakebailey commented Nov 12, 2018

Are you sure this is a language server issue? IIRC the extension is the one in control of indent on enter via those hardcoded regexes in extension.ts.

@DonJayamanne
Copy link
Author

DonJayamanne commented Nov 12, 2018

Doesn't LS handle this via format on type?
How else would the LS resolve microsoft/vscode-python#481

@jakebailey
Copy link
Member

No. On type formatting is not enabled by default, and will only affect the previous line (the one you hit enter from). Without the language server enabled:

continuation

If the "correct" behavior is to indent after a line continuation, then I think that first regex in onEnterRules needs to be modified.

@jakebailey
Copy link
Member

The only sort of indention that the LS does is the : block formatter, which is a 1:1 port from the extension and does do the extra indent. I think it's only done in on-type because onEnterRules isn't powerful enough.

It could technically be done inside of the onTypeFormat handler, but it would need to be reimplemented in the extension too (and then wouldn't be available to most people, because most people don't enable on-type).

@jakebailey
Copy link
Member

Sorry, I take that back, the : formatter is triggered on : (duh), so doesn't involve the onEnterRules, because : isn't \n. Brainfart.

@DonJayamanne
Copy link
Author

Ok, I'm confused, is this something that the language server can handle or not?

@jakebailey
Copy link
Member

It could handle it, but it shouldn't. All of the rules on when to add an indent on an enter are produced by those onEnterRules, which IIRC is the standard way in VSC to implement it per-language, and will apply to all users, not just those who change the editor-wide formatOnType setting.

Adding a one-off exception could be done, but would then need to be reimplemented in the extension's line formatter too. And IMO, this sort of auto-indent is not the same thing as on-type formatting.

@amueller
Copy link

btw I think the cases in microsoft/vscode-python#481 are more important since using / for line-continuation is discouraged:
https://www.python.org/dev/peps/pep-0008/#maximum-line-length

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants