X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fuserinputhandler.cpp;h=e9b01399b5bed573e0732306c36956fc17a1d8dc;hp=73bfcce116c65b71bd61bc4161d8f831a5aeb46a;hb=6579cd49c867ce3fb6c99127851a881ea82d1b1b;hpb=769fd4e7ade0b44503434d30fab8880a4b66411b diff --git a/src/core/userinputhandler.cpp b/src/core/userinputhandler.cpp index 73bfcce1..e9b01399 100644 --- a/src/core/userinputhandler.cpp +++ b/src/core/userinputhandler.cpp @@ -349,8 +349,27 @@ void UserInputHandler::handleWhowas(const BufferInfo &bufferInfo, const QString } void UserInputHandler::defaultHandler(QString cmd, const BufferInfo &bufferInfo, const QString &msg) { - Q_UNUSED(bufferInfo) + for(int i = 0; i < coreSession()->aliasManager().count(); i++) { + if(coreSession()->aliasManager()[i].name.toLower() == cmd.toLower()) { + expand(coreSession()->aliasManager()[i].expansion, bufferInfo, msg); + return; + } + } emit displayMsg(Message::Error, BufferInfo::StatusBuffer, "", QString("Error: %1 %2").arg(cmd).arg(msg)); } +void UserInputHandler::expand(const QString &alias, const BufferInfo &bufferInfo, const QString &msg) { + QStringList commands = alias.split(QRegExp("; ?")); + QStringList params = msg.split(' '); + for(int i = 0; i < commands.count(); i++) { + QString command = commands[i]; + for(int j = params.count(); j > 0; j--) { + command = command.replace(QString("$%1").arg(j), params[j - 1]); + } + command = command.replace("$0", msg); + handleUserInput(bufferInfo, command); + } +} + +