Chat: Remove prompt history duplicates (#6762)
authorSmallJoker <SmallJoker@users.noreply.github.com>
Thu, 14 Dec 2017 18:47:29 +0000 (19:47 +0100)
committerGitHub <noreply@github.com>
Thu, 14 Dec 2017 18:47:29 +0000 (19:47 +0100)
src/chat.cpp

index a5d82a6494289938bc011d71a014909075327a0c..818e261d7e376294d8044f4b47bc914dbe0f6ca6 100644 (file)
@@ -18,11 +18,14 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 */
 
 #include "chat.h"
-#include "debug.h"
-#include "config.h"
-#include "util/strfnd.h"
+
+#include <algorithm>
 #include <cctype>
 #include <sstream>
+
+#include "config.h"
+#include "debug.h"
+#include "util/strfnd.h"
 #include "util/string.h"
 #include "util/numeric.h"
 
@@ -403,8 +406,14 @@ void ChatPrompt::input(const std::wstring &str)
 
 void ChatPrompt::addToHistory(std::wstring line)
 {
-       if (!line.empty())
+       if (!line.empty() &&
+                       (m_history.size() == 0 || m_history.back() != line)) {
+               // Remove all duplicates
+               m_history.erase(std::remove(m_history.begin(), m_history.end(),
+                       line), m_history.end());
+               // Push unique line
                m_history.push_back(line);
+       }
        if (m_history.size() > m_history_limit)
                m_history.erase(m_history.begin());
        m_history_index = m_history.size();