Skip to content
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

Weird GDFormat style guidelines #295

Open
tavurth opened this issue Mar 21, 2024 · 2 comments
Open

Weird GDFormat style guidelines #295

tavurth opened this issue Mar 21, 2024 · 2 comments
Labels
discussion Let's discuss enhancement New feature or request

Comments

@tavurth
Copy link

tavurth commented Mar 21, 2024

Regarding the provided code examples, I share the opinion that the current GDFormat output could be improved to align better with popular formatting conventions:

my_array.append({
    # no-wrap
    "some": "a",
    "thing": "b",
    "is_weird": "something very long",
})

The GDFormat currently formats it as:

(
    my_array
    . append(
        {
            # no-wrap
            "some": "a",
            "thing": "b",
            "is_weird": "something very long",
        }
    )
)

The extra newline between append( and {, as well as the space between the dot and the method name, make the code a bit harder to read and deviate from common conventions.

  1. Regarding the newline between append( and {:
  1. Regarding the space between the dot and the method name:

And finally the Godot source code itself.

@tavurth
Copy link
Author

tavurth commented Mar 21, 2024

I should note the example formatted differently I guess:

Python

my_array.append(
    {
        # no-wrap
        "some": "a",
        "thing": "b",
        "is_weird": "something very long",
    }
)

Java

my_array.append({
            "some": "a",
            "thing": "b",
            "is_weird": "something very long",
        })

C++

my_array.append({
  "some": "a",
  "thing": "b",
  "is_weird": "something very long",
})

Javascript

my_array.append({
    "some": "a",
    "thing": "b",
    "is_weird": "something very long",
})

@Scony Scony added enhancement New feature or request discussion Let's discuss labels Mar 21, 2024
@Scony
Copy link
Owner

Scony commented Mar 21, 2024

I think it was discussed already in some issue but I couldn't find it. Anyway - I'd love to add support for such compact conventions but the thing is that it would take a lot of time to implement. Currently, the formatter operates in 2 modes (or strategies if you will) and chooses the one that fits better at a given point:

  1. "format everything to single line" - which does exactly what it says
  2. "format to multiple lines" - which formats to multiple lines and potentially falls back to 1) at deeper levels.

The correct approach to implement compact multiline formatting would be to add a new, 3rd strategy and use it in cases where it fits better. Such a strategy would require implementing custom formatting rules for all parse tree nodes which (assuming full test coverage) would require tons of man-hours to implement.

Therefore- realistically speaking - this feature probably won't ever be implemented although it would be a cool thing to have I agree.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Let's discuss enhancement New feature or request
Projects
Status: No status
Development

No branches or pull requests

2 participants