Skip to content

Commit

Permalink
Always re-render prompt while navigating history
Browse files Browse the repository at this point in the history
  • Loading branch information
amosbird committed Nov 20, 2021
1 parent f1bf1a5 commit 453bd9a
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
12 changes: 9 additions & 3 deletions src/replxx_impl.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -966,14 +966,20 @@ int Replxx::ReplxxImpl::virtual_render( char32_t const* buffer_, int len_, int&
* Refresh the user's input line: the prompt is already onscreen and is not
* redrawn here screen position
*/
void Replxx::ReplxxImpl::refresh_line( HINT_ACTION hintAction_ ) {
void Replxx::ReplxxImpl::refresh_line( HINT_ACTION hintAction_, bool refreshPrompt_ ) {
int long long now( now_us() );
int long long duration( now - _lastRefreshTime );
if ( duration < RAPID_REFRESH_US ) {
_lastRefreshTime = now;
_refreshSkipped = true;
return;
}
if ( refreshPrompt_ )
{
_terminal.jump_cursor( 0, 0 );
_prompt.write();
_prompt._cursorRowOffset = _prompt._extraLines;
}
_refreshSkipped = false;
render( hintAction_ );
handle_hints( hintAction_ );
Expand Down Expand Up @@ -1934,7 +1940,7 @@ Replxx::ACTION_RESULT Replxx::ReplxxImpl::history_move( bool previous_ ) {
}
_data.assign( _history.current() );
_pos = _data.length();
refresh_line();
refresh_line( HINT_ACTION::REGENERATE, true /* refreshPrompt */ );
return ( Replxx::ACTION_RESULT::CONTINUE );
}

Expand Down Expand Up @@ -2006,7 +2012,7 @@ Replxx::ACTION_RESULT Replxx::ReplxxImpl::history_jump( bool back_ ) {
_history.jump( back_ );
_data.assign( _history.current() );
_pos = _data.length();
refresh_line();
refresh_line( HINT_ACTION::REGENERATE, true /* refreshPrompt */ );
}
return ( Replxx::ACTION_RESULT::CONTINUE );
}
Expand Down
2 changes: 1 addition & 1 deletion src/replxx_impl.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ private:
void call_modify_callback( void );
completions_t call_completer( std::string const& input, int& ) const;
hints_t call_hinter( std::string const& input, int&, Replxx::Color& color ) const;
void refresh_line( HINT_ACTION = HINT_ACTION::REGENERATE );
void refresh_line( HINT_ACTION = HINT_ACTION::REGENERATE, bool refreshPrompt_ = false );
void move_cursor( void );
void indent( void );
int virtual_render( char32_t const*, int, int&, int&, Prompt const* = nullptr );
Expand Down

0 comments on commit 453bd9a

Please sign in to comment.