Index: code/branches/consolecommands3/src/libraries/core/command/ArgumentCompletionFunctions.cc
===================================================================
--- code/branches/consolecommands3/src/libraries/core/command/ArgumentCompletionFunctions.cc	(revision 7233)
+++ code/branches/consolecommands3/src/libraries/core/command/ArgumentCompletionFunctions.cc	(revision 7234)
@@ -123,14 +123,4 @@
         }
 
-        ARGUMENT_COMPLETION_FUNCTION_IMPLEMENTATION(hiddengroupsandcommands)()
-        {
-            return detail::_groupsandcommands(true);
-        }
-
-        ARGUMENT_COMPLETION_FUNCTION_IMPLEMENTATION(hiddensubcommands)(const std::string& fragment, const std::string& group)
-        {
-            return detail::_subcommands(fragment, group, true);
-        }
-
         ARGUMENT_COMPLETION_FUNCTION_IMPLEMENTATION_MULTI(command)(const std::string& fragment)
         {
@@ -148,4 +138,29 @@
                 return list;
             }
+        }
+
+        ARGUMENT_COMPLETION_FUNCTION_IMPLEMENTATION_MULTI(hiddencommand)(const std::string& fragment)
+        {
+            SubString tokens(fragment, " ", SubString::WhiteSpaces, false, '\\', true, '"', true, '(', ')', true, '\0');
+
+            if (tokens.size() == 0)
+                return detail::_groupsandcommands(true);
+
+            if (_ConsoleCommand::getCommandLC(getLowercase(tokens[0])))
+                return ARGUMENT_COMPLETION_FUNCTION_CALL(command)(fragment);
+
+            if (tokens.size() == 1)
+            {
+                std::map<std::string, std::map<std::string, _ConsoleCommand*> >::const_iterator it_group = _ConsoleCommand::getCommands().find(tokens[0]);
+                if (it_group != _ConsoleCommand::getCommands().end())
+                    return detail::_subcommands(fragment, tokens[0], true);
+                else
+                    return detail::_groupsandcommands(true);
+            }
+
+            if (_ConsoleCommand::getCommandLC(getLowercase(tokens[0]), getLowercase(tokens[1])))
+                return ARGUMENT_COMPLETION_FUNCTION_CALL(command)(fragment);
+
+            return ArgumentCompletionList();
         }
 
Index: code/branches/consolecommands3/src/libraries/core/command/ArgumentCompletionFunctions.h
===================================================================
--- code/branches/consolecommands3/src/libraries/core/command/ArgumentCompletionFunctions.h	(revision 7233)
+++ code/branches/consolecommands3/src/libraries/core/command/ArgumentCompletionFunctions.h	(revision 7234)
@@ -52,4 +52,6 @@
     ArgumentCompletionList acf_##functionname
 
+#define ARGUMENT_COMPLETION_FUNCTION_CALL(functionname) acf_##functionname
+
 
 namespace orxonox
@@ -60,7 +62,6 @@
         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(groupsandcommands)();
         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(subcommands)(const std::string& fragment, const std::string& group);
-        ARGUMENT_COMPLETION_FUNCTION_DECLARATION(hiddengroupsandcommands)();
-        ARGUMENT_COMPLETION_FUNCTION_DECLARATION(hiddensubcommands)(const std::string& fragment, const std::string& group);
         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(command)(const std::string& fragment);
+        ARGUMENT_COMPLETION_FUNCTION_DECLARATION(hiddencommand)(const std::string& fragment);
         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(files)(const std::string& fragment);
         ARGUMENT_COMPLETION_FUNCTION_DECLARATION(settingssections)();
Index: code/branches/consolecommands3/src/libraries/core/command/CommandExecutor.cc
===================================================================
--- code/branches/consolecommands3/src/libraries/core/command/CommandExecutor.cc	(revision 7233)
+++ code/branches/consolecommands3/src/libraries/core/command/CommandExecutor.cc	(revision 7234)
@@ -44,8 +44,5 @@
 
     _SetConsoleCommand("unhide", &CommandExecutor::unhide)
-        .argumentCompleter(0, autocompletion::hiddengroupsandcommands())
-        .argumentCompleter(1, autocompletion::hiddensubcommands())
-        .defaultValue(1, "")
-        .defaultValue(2, "");
+        .argumentCompleter(0, autocompletion::hiddencommand());
 
     /* static */ CommandExecutor& CommandExecutor::getInstance()
@@ -156,7 +153,7 @@
     }
 
-    /* static */ MultiType CommandExecutor::unhide(const std::string& group, const std::string& name, const std::string& arguments)
+    /* static */ MultiType CommandExecutor::unhide(const std::string& command)
     {
-        return CommandExecutor::queryMT(group + " " + name + " " + arguments);
+        return CommandExecutor::queryMT(command);
     }
 }
Index: code/branches/consolecommands3/src/libraries/core/command/CommandExecutor.h
===================================================================
--- code/branches/consolecommands3/src/libraries/core/command/CommandExecutor.h	(revision 7233)
+++ code/branches/consolecommands3/src/libraries/core/command/CommandExecutor.h	(revision 7234)
@@ -59,5 +59,5 @@
             static const int Denied = 4;
 
-            static MultiType unhide(const std::string& group, const std::string& name, const std::string& arguments);
+            static MultiType unhide(const std::string& command);
             static void _autocomplete(const std::string& group, const std::string& name) {}
 
