X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FTermlib%2FEditor.cc;h=0122904da71794f0b8950ed9f9f80ef82207a455;hb=9e9679b333e3e6c2face5c16d1f98e4236a890ae;hp=f3a0c19714110dd8582af21c4f87b790baf7bdaa;hpb=79e54eda6a7fb5ac3fa5b37f408dd386454c5bbd;p=senf.git diff --git a/Utils/Termlib/Editor.cc b/Utils/Termlib/Editor.cc index f3a0c19..0122904 100644 --- a/Utils/Termlib/Editor.cc +++ b/Utils/Termlib/Editor.cc @@ -253,11 +253,13 @@ prefix_ void senf::term::BaseEditor::processKeys() } prefix_ unsigned senf::term::BaseEditor::width() + const { return terminal_->width(); } prefix_ unsigned senf::term::BaseEditor::height() + const { return terminal_->height(); } @@ -346,7 +348,7 @@ prefix_ void senf::term::LineEditor::accept() if (enabled_) newline(); hide(); - pushHistory(text_); + pushHistory(text_, true); callback_(text_); clear(); } @@ -430,15 +432,16 @@ prefix_ void senf::term::LineEditor::insert(std::string const & text) redisplay(); } -prefix_ void senf::term::LineEditor::pushHistory(std::string const & text) +prefix_ void senf::term::LineEditor::pushHistory(std::string const & text, bool accept) { if (! text.empty() - && (historyPoint_ == history_.size() || history_[historyPoint_] != text) + && (accept || historyPoint_ == history_.size() || history_[historyPoint_] != text) && (history_.empty() || history_.back() != text)) { history_.push_back(text); while (history_.size() > MAX_HISTORY_SIZE) history_.erase(history_.begin()); - historyPoint_ = history_.size() - 1; + if (accept) + historyPoint_ = history_.size() - 1; } }