From 361bda07efc773556363958176dcb5f49c439a09 Mon Sep 17 00:00:00 2001 From: hengyunabc Date: Sun, 25 Nov 2018 23:42:23 +0800 Subject: [PATCH] fix long name option completion. close #318 --- .../com/taobao/arthas/core/shell/cli/CompletionUtils.java | 7 ++++++- .../arthas/core/shell/term/impl/CompletionAdaptor.java | 8 +++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/com/taobao/arthas/core/shell/cli/CompletionUtils.java b/core/src/main/java/com/taobao/arthas/core/shell/cli/CompletionUtils.java index e0477b09a..eb63a64ce 100644 --- a/core/src/main/java/com/taobao/arthas/core/shell/cli/CompletionUtils.java +++ b/core/src/main/java/com/taobao/arthas/core/shell/cli/CompletionUtils.java @@ -99,7 +99,12 @@ public class CompletionUtils { } else { String commonPrefix = CompletionUtils.findLongestCommonPrefix(candidates); if (commonPrefix.length() > 0) { - completion.complete(commonPrefix, false); + if (commonPrefix.length() == prefix.length()) { + completion.complete(candidates); + } else { + completion.complete(commonPrefix.substring(prefix.length(), commonPrefix.length()), false); + } + } else { completion.complete(candidates); } diff --git a/core/src/main/java/com/taobao/arthas/core/shell/term/impl/CompletionAdaptor.java b/core/src/main/java/com/taobao/arthas/core/shell/term/impl/CompletionAdaptor.java index 17380f05c..b0fcb27b0 100644 --- a/core/src/main/java/com/taobao/arthas/core/shell/term/impl/CompletionAdaptor.java +++ b/core/src/main/java/com/taobao/arthas/core/shell/term/impl/CompletionAdaptor.java @@ -49,9 +49,11 @@ class CompletionAdaptor implements Completion { CliToken lastToken = tokens.get(tokens.size() - 1); if (!commonPrefix.equals(lastToken.value())) { // only complete if the common prefix is longer than the last token - String strToComplete = commonPrefix.substring(lastToken.value().length()); - completion.complete(io.termd.core.util.Helper.toCodePoints(strToComplete), false); - return; + if (commonPrefix.length() > lastToken.value().length()) { + String strToComplete = commonPrefix.substring(lastToken.value().length()); + completion.complete(io.termd.core.util.Helper.toCodePoints(strToComplete), false); + return; + } } } }