Skip to content

Filter instances to only include matches that have same scope type as input #2066

@pokey

Description

@pokey
Member

We already do this when we detect that the input for "instance" is a token or word, but we should do it for other scopes. We should also construct a target of the right scope type. For example:

const aaa = bbb(ccc, ddd);
const eee = ccc + ddd(ccc, fff);

In this case, "chuck two instances arg cap" should give:

const aaa = bbb(ddd);
const eee = ccc + ddd(fff);

Note how:

  • It skips the ccc in = ccc + because that is not an argument
  • It cleans up commas on both ccc args, because it constructs args rather than untyped targets

I do wonder if this behaviour would be surprising? Would you see that ccc in const ccc as an instance of the same thing?

Related:

Approach

  • Add a scopeType field to Target
    Try to expand to that scopeType when we find a match, just as we do for token and word targets in instance today
    If we can expand to that scope type and it's equal to the range, return the target we expanded to, as that has the rich info

Activity

pokey

pokey commented on Nov 30, 2023

@pokey
MemberAuthor

Another potential problem here: this behaviour will likely be quite surprising with "name". If I say "clear every instance name" as a poor-man's rename, it wouldn't work, because the other instances won't be names 🤔

I am starting to get the feeling that "name", "first token", etc should downgrade to "token" for inference / instance, as they are most often the problem children for this kinda thing. They're often just used as a convenient way to target a token, rather than a semantically rich scope. Idk

Cc/ @josharian

josharian

josharian commented on Nov 30, 2023

@josharian
Collaborator

I think the best way to answer that question is to play around with it a bit.

pokey

pokey commented on Nov 30, 2023

@pokey
MemberAuthor

Which question?

josharian

josharian commented on Nov 30, 2023

@josharian
Collaborator

Whether some scopes should be downgraded to token.

pokey

pokey commented on Nov 30, 2023

@pokey
MemberAuthor

Right yeah I think that makes sense. On the first question of whether requiring "name" to be "name" for instance, I'm quite confident that would bite me

pokey

pokey commented on Jan 7, 2024

@pokey
MemberAuthor

Update from meet-up:

  • Let's go for the approach described in this issue
  • The "every name" thing can be solved by saying "every token name", whereas the reverse can't be recovered
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @josharian@pokey

        Issue actions

          Filter instances to only include matches that have same scope type as input · Issue #2066 · cursorless-dev/cursorless