namespace console {
namespace detail {
+ /** \brief Internal: Client reader switching between LineEditorClientReader or DumbClientReader
+
+ This ClientReader implementation will try to initialize a LineEditorClientReader. If the
+ setup fails, a DumbClientReader is initialized instead. LineEditor support may fail to be
+ initialized if
+
+ \li The telnet client does not support necessary functionality
+ \li or the terminal type of the client is missing some functionality.
+ */
class LineEditorSwitcher
: public ClientReader
{
virtual void v_disablePrompt();
virtual void v_enablePrompt();
virtual void v_write(std::string const & data);
+ virtual unsigned v_width() const;
boost::scoped_ptr<ClientReader> reader_;
};
+ /** \brief Internal: ClientReader using senf::term::LineEditor for interactive input
+
+ This ClientReader implementation uses a senf::term::LineEditor for interactive input.
+ */
class LineEditorClientReader
: public ClientReader, public term::TelnetTerminal
{
virtual void v_disablePrompt();
virtual void v_enablePrompt();
virtual void v_write(std::string const & data);
+ virtual unsigned v_width() const;
// Editor callbacks
void executeLine(std::string const & text);
void deleteCharOrExit(term::LineEditor & editor);
- void completePath(term::LineEditor & editor, unsigned b, unsigned e,
- std::vector<std::string> & completions);
+ void completePath(term::LineEditor & editor, unsigned & b, unsigned & e,
+ std::string & prefix, std::vector<std::string> & completions);
term::LineEditor editor_;
LineEditorSwitcher * switcher_;
+ std::string default_;
};
}}}