fix how fish behaves when FISH_HISTORY is set

Without this change setting `FISH_HISTORY` causes interactive input to
no longer provide autosuggestions, completions, etc.

Fixes #4234
This commit is contained in:
Kurtis Rader 2017-07-27 21:32:49 -07:00
parent 7a18c37b39
commit 96fca8b4ec
3 changed files with 9 additions and 2 deletions

View File

@ -613,8 +613,7 @@ static void react_to_variable_change(const wcstring &key) {
} else if (key == L"FISH_READ_BYTE_LIMIT") {
env_set_read_limit();
} else if (key == L"FISH_HISTORY") {
history_destroy();
reader_push(history_session_id().c_str());
reader_change_history(history_session_id().c_str());
}
}

View File

@ -1995,6 +1995,11 @@ static parser_test_error_bits_t default_test(const wchar_t *b) {
return 0;
}
void reader_change_history(const wchar_t *name) {
data->history->save();
data->history = &history_t::history_with_name(name);
}
void reader_push(const wchar_t *name) {
reader_data_t *n = new reader_data_t();

View File

@ -72,6 +72,9 @@ const wchar_t *reader_current_filename();
/// \param fn The fileanme to push
void reader_push_current_filename(const wchar_t *fn);
/// Change the history file for the current command reading context.
void reader_change_history(const wchar_t *fn);
/// Pop the current filename from the stack of read files.
void reader_pop_current_filename();