From 383306e17ea8bf88c8f7bc24a4873246af3cc983 Mon Sep 17 00:00:00 2001 From: Seth Troisi Date: Tue, 1 Jul 2025 15:51:43 -0700 Subject: Improve slashCommand autoCompletion logic (#2776) --- packages/cli/src/ui/components/InputPrompt.tsx | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'packages/cli/src/ui/components') 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 = ({ 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 = ({ 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 = ({ buffer.replaceRangeByOffset( autoCompleteStartIndex, buffer.text.length, - selectedSuggestion.value, + suggestion, ); } resetCompletionState(); -- cgit v1.2.3