summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/components/InputPrompt.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/components/InputPrompt.tsx')
-rw-r--r--packages/cli/src/ui/components/InputPrompt.tsx17
1 files changed, 11 insertions, 6 deletions
diff --git a/packages/cli/src/ui/components/InputPrompt.tsx b/packages/cli/src/ui/components/InputPrompt.tsx
index d687cca9..095c8ccc 100644
--- a/packages/cli/src/ui/components/InputPrompt.tsx
+++ b/packages/cli/src/ui/components/InputPrompt.tsx
@@ -113,7 +113,7 @@ export const InputPrompt: React.FC<InputPromptProps> = ({
return;
}
const query = buffer.text;
- const selectedSuggestion = completionSuggestions[indexToUse];
+ const suggestion = completionSuggestions[indexToUse].value;
if (query.trimStart().startsWith('/')) {
const parts = query.trimStart().substring(1).split(' ');
@@ -122,11 +122,16 @@ export const InputPrompt: React.FC<InputPromptProps> = ({
const base = query.substring(0, slashIndex + 1);
const command = slashCommands.find((cmd) => cmd.name === commandName);
- if (command && command.completion) {
- const newValue = `${base}${commandName} ${selectedSuggestion.value}`;
- buffer.setText(newValue);
+ // Make sure completion isn't the original command when command.completigion hasn't happened yet.
+ if (command && command.completion && suggestion !== commandName) {
+ const newValue = `${base}${commandName} ${suggestion}`;
+ if (newValue === query) {
+ handleSubmitAndClear(newValue);
+ } else {
+ buffer.setText(newValue);
+ }
} else {
- const newValue = base + selectedSuggestion.value;
+ const newValue = base + suggestion;
buffer.setText(newValue);
handleSubmitAndClear(newValue);
}
@@ -142,7 +147,7 @@ export const InputPrompt: React.FC<InputPromptProps> = ({
buffer.replaceRangeByOffset(
autoCompleteStartIndex,
buffer.text.length,
- selectedSuggestion.value,
+ suggestion,
);
}
resetCompletionState();