Skip to content

Make repl autocomplete case-insensitive #41631

Closed
@gribnoysup

Description

@gribnoysup

What is the problem this feature will solve?

Having an autocomplete in the REPL is already a great feature, but currently the autocomplete is case-sensitive, which means that if you are not quite sure about variable names or typing too fast to case your input properly you might miss out on the benefits of having an autocomplete aiding you in your typing.

What is the feature you are proposing to solve the problem?

Make autocomplete case-insensitive.

Specifically I'm suggesting not to make it completely case-insensitive, but follow console behavior in browsers (at least Chrome and FF that I used as reference) that Node.js REPL users might be most familiar with already.

These browsers make autocomplete suggestions ignoring the input case if the first char of the last member in the input that autocomplete is trying to complete is lower-cased, otherwise, if the char is upper-cased, browser will use input casing when filtering autocomplete suggestions.

To illustrate this behavior:

> var xa = '123';
> var Xb = { fooBar: 1, FooBuz: 2 }
> x <tab>
xa Xb
> X <tab>
(autocompletes to `Xb` because it's the only possible option)
> Xb.f <tab>
Xb.FooBuz  Xb.fooBar
> Xb.F <tab>
(autocompletes to `Xb.FooBuz` because it's the only possible option)
> Xb.Foob <tab>
(no autocomplete suggestions because suggestions are preserving case)

I also opened a PR with a possible implementation of this autocomplete change #41632

What alternatives have you considered?

Make autocomplete completely case-insensitive. Totally an option, but in my opinion browser behavior makes sense: if you are using uppercase in your input, this seems like a good indicator that you are very intentional about it and autocomplete suggestions should respect that.

Preserve current behavior. Worth mentioning because changing autocomplete to be case-insensitive while helpful in some cases, might introduce more autocomplete noise and inconvenience in others. For example typing func <tab> will not autocomplete to function anymore because Function will be a matching suggestion

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature requestIssues that request new features to be added to Node.js.replIssues and PRs related to the REPL subsystem.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions