Skip to content

How we decide on which scopes to use. #138

Open
@omniomi

Description

@omniomi

The use of variable.other.member for properties and methods has been incredibly contentious because most themes don't colour it and some people really don't like the lack of distinction. There has been some suggestion that the grammar should take into account user expectation and/or what themes are or are not doing whether that be the VS Code default themes or some majority of all themes. There is also a question of whether or not grammar maintainers should be responsible for updating the default themes (either before or after making changes to the grammar scopes) if that's even feasible (see below.)

As far as scope selection goes there are a few options:

  1. Adhere as strictly as possible to https://sublimetext.com/docs/3/scope_naming.html
  2. Aim for consistency with other languages.
    a. Aim for consistency with one other language such as C#.
    b. Aim for consistency with as many similar languages as possible.
  3. Make decisions based on maintaining the look and feel at a particular point in time in one or more themes.
  4. Make decisions based on reaching a similar delineation of language components to ISE, PowerShell Studio, etc again based on what themes are currently doing.
  5. Use consensus / discussion for each change.
  6. Other?

I personally prefer a mixture of 1 and 2b which leads to the second question: what level of responsibility do we have to maintain user experience be that in the default themes, the ise them, or some majority of all themes?

  • Should we update the default themes to maintain consistency when we make major changes?
    • Does it need to occur before/in parallel with our changes?
  • Should we update the ISE theme to maintain consistency when we make changes?
    • Does it need to occur before/in parallel with our changes?
  • Should we update major third party themes to maintain consistency when we make a change?
    • Does it need to occur before/in parallel with our changes?

NOTE: When I say "should we update" it could also be an issue/request.

Keeping in mind that if we change to a scope used by other languages that changes to the themes to maintain consistency for PowerShell writers could disturb the expectation of other developers. For example the sigil scope applied to the $ in variables is consistent across almost 10 languages. If we added or removed colour support in the default themes to match PowerShell expectations it could negatively impact other language developers. This raises a final question that goes along with the first one:

  1. Should we make choices with PowerShell-only expectations in mind.
  2. Should we make choices with consistency for people who write multiple languages in mind.

Ie, should these look the same between PowerShell and PHP?

$Variable.Property.Method()
$variable->property->method();

Or should the PowerShell one look how it looks in ISE/how it always has looked in VS Code.

Related: #8
Open issues that raise some of these questions: #130 #129

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions