if (enabled_)
return;
enabled_ = true;
+ for (unsigned n (0); n < auxDisplay_.size(); ++n) {
+ toLine(n+1);
+ put(auxDisplay_[n]);
+ }
+ toLine(0);
forceRedisplay();
}
{
if (! enabled_)
return;
+ reset();
clearLine();
enabled_ = false;
}
toLine(line+1);
clearLine();
put(text);
+ while (auxDisplay_.size() < line+1)
+ auxDisplay_.push_back("");
+ auxDisplay_[line] = text;
}
prefix_ unsigned senf::term::LineEditor::maxAuxDisplayHeight()
prefix_ void senf::term::LineEditor::clearAuxDisplay()
{
reset();
+ auxDisplay_.clear();
}
prefix_ std::string const & senf::term::LineEditor::text()
didComplete = true;
}
- // If completion is already unique, make sure completion is followed by a space and place cursor
- // after that space
- if (completions.size() == 1u) {
- if (text.size() <= commonStart || text[commonStart] != ' ')
- text.insert(commonStart, " ");
- editor.set(text, commonStart + 1);
- return;
- }
-
- // Otherwise place cursor directly after the partial completion
+ // Otherwise place cursor directly after the (possibly partial) completion
editor.set(text, commonStart);
- if (didComplete)
+ if (didComplete || completions.size() == 1)
return;
// Text was not changed, show list of possible completions