///////////////////////////////////////////////////////////////////////////
prefix_ senf::term::LineEditor::LineEditor(AbstractTerminal & terminal, AcceptCallback cb)
- : BaseEditor(terminal), enabled_ (true), prompt_ ("$"), promptWidth_ (1u), editWidth_ (0u),
+ : BaseEditor(terminal), enabled_ (false), prompt_ ("$"), promptWidth_ (1u), editWidth_ (0u),
text_ (""), point_ (0u), displayPos_ (0u), lastKey_ (0u), callback_ (cb), historyPoint_ (0u)
{
defineKey(KeyParser::Return, &bindings::accept);
}
}
-prefix_ void senf::term::LineEditor::auxDisplay(int line, std::string const & text)
+prefix_ void senf::term::LineEditor::auxDisplay(unsigned line, std::string const & text)
{
toLine(line+1);
clearLine();
if (!BaseEditor::cb_init())
return false;
prompt(prompt_);
- forceRedisplay();
+ show();
return true;
}
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