feat(@clack/core,@clack/prompts): Multiline text input #240
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add a new prompt:
MultiLinePrompt
and its renderingmultiline
Changes
Added to
@clack/core
return
to keep retro-compatibility)isSameKey
) to test if two key are the same (withctrl
,meta
,shift
included in the check)MultiLinePrompt
Added to
@clack/prompts
multiline
Difficulties and workaround
Issue: The
return
key is used to submit the prompt and is hardcoded, so impossible to insert new lineSolution: Make the submit key configurable (see:
packages/core/src/prompts/prompt.ts:{22,53,210}
)Issue: The default cursor management use vim mapping, so when pressing letter
k
,j
,h
orl
to add those letter, the cursor also moves.Solution: Re-implementing of the cursor management without vim mapping (see
packages/core/src/prompts/multi-line.ts:29
)Issue: The event
key
lower the inputted char, so uppercased char are never displayedSolution: Create a new event
rawKey
to send the untouched value (also used for the cursor management)