You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2013/09/05 15:00:12 UTC
svn commit: r1520294 -
/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java
Author: jbonofre
Date: Thu Sep 5 13:00:12 2013
New Revision: 1520294
URL: http://svn.apache.org/r1520294
Log:
[KARAF-1629] Fix the completer to complete on the first sub-shell level
Modified:
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java
Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java?rev=1520294&r1=1520293&r2=1520294&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java Thu Sep 5 13:00:12 2013
@@ -72,6 +72,7 @@ public class CommandsCompleter implement
// TODO: fix that in gogo instead
// get the current sub-shell
String subshell = (String) session.get("SUBSHELL");
+
Set<String> names = new HashSet<String>((Set<String>) session.get(CommandSessionImpl.COMMANDS));
Set<String> filteredNames = new HashSet<String>();
for (String command : names) {
@@ -94,12 +95,22 @@ public class CommandsCompleter implement
// add argument completers for each command
for (String command : names) {
Function function = (Function) session.get(command);
+
function = unProxy(function);
if (function instanceof CommandWithAction) {
if (command.startsWith(subshell)) {
if (subshell.length() > 1 && command.length() > subshell.length()) {
command = command.substring(subshell.length() + 1);
}
+
+ // filter on subshell
+ if (command.contains(":")) {
+ int index = command.indexOf(':');
+ command = command.substring(0, index);
+ }
+
+ command.trim();
+
try {
completers.add(new ArgumentCompleter(session, (CommandWithAction) function, command));
} catch (Throwable t) {