From 6fe6ac41f970b79ebd9e6245372aa662dd42af0e Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Sat, 7 Dec 2024 14:13:47 +0100 Subject: [PATCH] Let CommandRegistry create Candidate --- .../org/jline/console/CommandRegistry.java | 19 ++++++++++++------- .../console/impl/SystemRegistryImpl.java | 2 +- .../impl/completer/SystemCompleter.java | 6 ++---- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/console/src/main/java/org/jline/console/CommandRegistry.java b/console/src/main/java/org/jline/console/CommandRegistry.java index c4809630..439139ff 100644 --- a/console/src/main/java/org/jline/console/CommandRegistry.java +++ b/console/src/main/java/org/jline/console/CommandRegistry.java @@ -11,8 +11,8 @@ import java.io.InputStream; import java.io.PrintStream; import java.util.*; -import java.util.stream.Stream; +import org.jline.reader.Candidate; import org.jline.reader.impl.completer.SystemCompleter; import org.jline.terminal.Terminal; @@ -43,15 +43,20 @@ static SystemCompleter aggregateCompleters(CommandRegistry... commandRegistries) */ static SystemCompleter compileCompleters(CommandRegistry... commandRegistries) { SystemCompleter out = aggregateCompleters(commandRegistries); - out.compile(s -> getDescription(commandRegistries, s)); + out.compile(s -> createCandidate(commandRegistries, s)); return out; } - static String getDescription(CommandRegistry[] commandRegistries, String s) { - return Stream.of(commandRegistries) - .flatMap(r -> r.hasCommand(s) ? r.commandInfo(s).stream() : Stream.empty()) - .findFirst() - .orElse(null); + static Candidate createCandidate(CommandRegistry[] commandRegistries, String command) { + String group = null, desc = null; + for (CommandRegistry registry : commandRegistries) { + if (registry.hasCommand(command)) { + group = registry.name(); + desc = registry.commandInfo(command).stream().findFirst().orElse(null); + break; + } + } + return new Candidate(command, command, group, desc, null, null, true); } /** diff --git a/console/src/main/java/org/jline/console/impl/SystemRegistryImpl.java b/console/src/main/java/org/jline/console/impl/SystemRegistryImpl.java index 8cd10c5d..13eef3ff 100644 --- a/console/src/main/java/org/jline/console/impl/SystemRegistryImpl.java +++ b/console/src/main/java/org/jline/console/impl/SystemRegistryImpl.java @@ -306,7 +306,7 @@ private SystemCompleter _compileCompleters() { } local.add(customSystemCompleter); out.add(local); - out.compile(s -> CommandRegistry.getDescription(commandRegistries, s)); + out.compile(s -> CommandRegistry.createCandidate(commandRegistries, s)); return out; } diff --git a/reader/src/main/java/org/jline/reader/impl/completer/SystemCompleter.java b/reader/src/main/java/org/jline/reader/impl/completer/SystemCompleter.java index 4f1c453f..f5ab3657 100644 --- a/reader/src/main/java/org/jline/reader/impl/completer/SystemCompleter.java +++ b/reader/src/main/java/org/jline/reader/impl/completer/SystemCompleter.java @@ -126,7 +126,7 @@ private Map getAliases() { return aliasCommand; } - public void compile(Function descriptionProvider) { + public void compile(Function candidateBuilder) { if (compiled) { return; } @@ -142,9 +142,7 @@ public void compile(Function descriptionProvider) { completers = compiledCompleters; Set cmds = new HashSet<>(completers.keySet()); cmds.addAll(aliasCommand.keySet()); - commands = new StringsCompleter(cmds.stream() - .map(s -> new Candidate(s, s, null, descriptionProvider.apply(s), null, null, true, 0)) - .collect(Collectors.toList())); + commands = new StringsCompleter(cmds.stream().map(candidateBuilder).collect(Collectors.toList())); compiled = true; }