TODO: - scrolling - commit/cancel - command history (via an external command history provider) - tab completion (via an external tab completion provider)