Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Can you replace user's input when using CompletionProposal?

Open
#1,097 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
java
Domain
cli

Research direction

Start by inspecting CompletionProposal and its displayText, category, and description methods. Determine how completion matching and replacement currently use the proposal text. Done means search terms such as enum properties or descriptive names can select a proposal while replacing the input with its final value and showing a clear label to the user.

Written by the indexing model from the issue text.

Description

status/need-triage

Let's say the options are an enum of DayOfWeek; and each day has an associated number and color (just for the sake of an example).

public enum DayOfWeek {
    MONDAY(0, "yellow"),
    TUESDAY(1, "blue"),
    WEDNESDAY(2, "pink"),
    THURSDAY(3, "purple"),
    FRIDAY(4, "orange"),
    SATURDAY(5, "green"),
    SUNDAY(6, "red");

    public int num;
    public String color;

    public DayOfWeek(int num, String color) {
        this.num = num;
        this.color = color;
    }

    public static List<CompletionProposal> completion() {
        return Arrays.stream(values()).map(Enum::name).map(CompletionProposal::new).toList();
    }
}

I want the user to get autocomplete with all the properties, in addition to the enum name.

If I give the List<CompletionProposal> of the names of the enum constants, this will work:
MON -> MONDAY

What if I want the user to type gre or green and then have it change to SATURDAY?

Even if that is not possible, what if I type satur? It won't autocomplete to SATURDAY or saturday, unless I include the day twice as upper and lower cases, which is confusing to the user.

The only way I can think of showing it to the user is to use the displayText, category, or description method to the user, but it's still a chore to type exactly the words.

In my case I have IDs of a huge list, and the user won't remember the entire IDs of the list, so I would like them to autocomplete with a sort of a "search" feature. Let's say I type "Mark Twain" or "Tom Sawyer", I want to get "94782293" to replace the words I typed, since the final value will be an ID, but the other words help search. So far I'm using displayText as Tom Sawyer by Mark Twain: 94782293, but the value is 94782293, which is obscuring what's happening to the user.

Dominant language
Java
Stars
826
Forks
404
Avg merge
6d 9h
Merged PRs (30d)
1

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from spring-projects/spring-shell

All issues in spring-projects/spring-shell

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.