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) {