diff --git a/honoka/plugins/honoka_plugin_def.h b/honoka/plugins/honoka_plugin_def.h index f990ffa..8b29c97 100644 --- a/honoka/plugins/honoka_plugin_def.h +++ b/honoka/plugins/honoka_plugin_def.h @@ -49,4 +49,7 @@ #define HONOKA_CONFIG_KANAINPUT_FAKEKANA "/IMEngine/Honoka/KanaInput/FakeKanaKey" #define HONOKA_DEFAULT_KANAINPUT_FAKEKANA true +#define HONOKA_CONFIG_SIMPLEPREDICTION_SIZE "/IMEngine/Honoka/SimplePrediction/Size" +#define HONOKA_DEFAULT_SIMPLEPREDICTION_SIZE 200 + #endif diff --git a/honoka/plugins/simpleprediction.cpp b/honoka/plugins/simpleprediction.cpp index a2d4740..637910f 100644 --- a/honoka/plugins/simpleprediction.cpp +++ b/honoka/plugins/simpleprediction.cpp @@ -19,6 +19,7 @@ ***************************************************************************/ #include "simpleprediction.h" +#include #ifdef HAVE_CONFIG_H #include @@ -42,6 +43,8 @@ SimplePrediction::SimplePrediction(ConfigPointer cfg) : Predictor(cfg) { + size = cfg->read(HONOKA_CONFIG_SIMPLEPREDICTION_SIZE,HONOKA_DEFAULT_SIMPLEPREDICTION_SIZE); + if (size < 0) size = 0; } @@ -64,6 +67,7 @@ } if (!tmp.size()) return ResultList(); ResultList l; + l.Title = utf8_mbstowcs(String(_("lookup result"))); l.kType = PREDICTION; for(multimap::iterator it = tmp.begin();it != tmp.end();it ++) { l.kouho.push_back(ResultEntry(it->second)); @@ -121,8 +125,10 @@ void SimplePrediction::update(const WideString str,const WideString yomi) { if ((!yomi.length()) || (!str.length())) return; + for(multimap::iterator it = data.find(yomi);it != data.end();data.find(yomi)) + if (it->second == str) return; data.insert(pair(yomi,str)); - if (data.size() > 200) data.erase(data.begin()); + if (data.size() > size) data.erase(data.begin()); return; } diff --git a/honoka/plugins/simpleprediction.h b/honoka/plugins/simpleprediction.h index 2df9e4d..6139aac 100644 --- a/honoka/plugins/simpleprediction.h +++ b/honoka/plugins/simpleprediction.h @@ -53,6 +53,7 @@ protected: multimap data; + int size; }; #endif