eclipse-langium / langium

Next-gen language engineering / DSL framework
https://langium.org/
MIT License
750 stars 68 forks source link

Add features for the Statemachine example #1257

Open pluralia opened 1 year ago

pluralia commented 1 year ago
Yokozuna59 commented 1 year ago

Hi @pluralia,

I plan to work on this if it's possible, but I've few questions:

  1. On the first code actions:

    If a state name doesn't start with a capital letter, replace it with capitalized name (look at the corresponding validation here)

    The action should also update everywhere the state has been used, shouldn't it?

  2. Do we actually need to override RenameProvider? It's working fine:

    Screencast from 2023-11-04 15-02-12.webm

  3. Should we also validate commands uniqueness and usage? Currently, it's possible to have duplicate command names within commands, states, and events.

msujew commented 1 year ago

@Yokozuna59

The action should also update everywhere the state has been used, shouldn't it?

Yes, it should work similar to the rename LSP feature in that regard.

Do we actually need to override RenameProvider? It's working fine:

It was probably added in error, I don't think it's necessary.

Should we also validate commands uniqueness and usage? Currently, it's possible to have duplicate command names within commands, states, and events.

Yep, that would be good 👍

Yokozuna59 commented 1 year ago

@msujew Thanks for the feedback. I'm almost done, but the formatting is kind of performing some of the expected behaviors. For example, the following format code:

formatter.keyword('initialState')
    .prepend(Formatting.fit(Formatting.newLine({ allowMore: true }), /* another rule */))
    .append(Formatting.oneSpace());

It formats the previous lines and makes them one, although it has allowMore. If I remove the Formatting.fit, it doesn't do that.

I tried to add and remove another rule in Formatting.fit, but it's performing the same behavior.