mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-27 21:33:09 +00:00
clear_pager to accept reader_data directly
This commit is contained in:
parent
e11c3f352f
commit
968152ddc7
1 changed files with 12 additions and 14 deletions
|
@ -411,7 +411,7 @@ class reader_data_t {
|
||||||
static void reader_set_buffer_maintaining_pager(const wcstring &b, size_t pos);
|
static void reader_set_buffer_maintaining_pager(const wcstring &b, size_t pos);
|
||||||
|
|
||||||
/// Clears the pager.
|
/// Clears the pager.
|
||||||
static void clear_pager();
|
static void clear_pager(reader_data_t *data);
|
||||||
|
|
||||||
/// The stack of current interactive reading contexts.
|
/// The stack of current interactive reading contexts.
|
||||||
static std::vector<std::unique_ptr<reader_data_t>> reader_data_stack;
|
static std::vector<std::unique_ptr<reader_data_t>> reader_data_stack;
|
||||||
|
@ -1402,7 +1402,7 @@ static void accept_autosuggestion(bool full,
|
||||||
reader_data_t *data = current_data();
|
reader_data_t *data = current_data();
|
||||||
if (!data->autosuggestion.empty()) {
|
if (!data->autosuggestion.empty()) {
|
||||||
// Accepting an autosuggestion clears the pager.
|
// Accepting an autosuggestion clears the pager.
|
||||||
clear_pager();
|
clear_pager(data);
|
||||||
|
|
||||||
// Accept the autosuggestion.
|
// Accept the autosuggestion.
|
||||||
if (full) {
|
if (full) {
|
||||||
|
@ -1425,12 +1425,10 @@ static void accept_autosuggestion(bool full,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure we have no pager contents.
|
// Ensure we have no pager contents.
|
||||||
static void clear_pager() {
|
static void clear_pager(reader_data_t *data) {
|
||||||
if (reader_data_t *data = current_data_or_null()) {
|
data->pager.clear();
|
||||||
data->pager.clear();
|
data->current_page_rendering = page_rendering_t();
|
||||||
data->current_page_rendering = page_rendering_t();
|
reader_repaint_needed();
|
||||||
reader_repaint_needed();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void select_completion_in_direction(enum selection_direction_t dir) {
|
static void select_completion_in_direction(enum selection_direction_t dir) {
|
||||||
|
@ -1990,7 +1988,7 @@ void reader_set_buffer(const wcstring &b, size_t pos) {
|
||||||
reader_data_t *data = current_data_or_null();
|
reader_data_t *data = current_data_or_null();
|
||||||
if (!data) return;
|
if (!data) return;
|
||||||
|
|
||||||
clear_pager();
|
clear_pager(data);
|
||||||
reader_set_buffer_maintaining_pager(b, pos);
|
reader_set_buffer_maintaining_pager(b, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2543,7 +2541,7 @@ maybe_t<wcstring> reader_readline(int nchars) {
|
||||||
|
|
||||||
// End paging upon inserting into the normal command line.
|
// End paging upon inserting into the normal command line.
|
||||||
if (el == &data->command_line) {
|
if (el == &data->command_line) {
|
||||||
clear_pager();
|
clear_pager(data);
|
||||||
}
|
}
|
||||||
last_char = c;
|
last_char = c;
|
||||||
}
|
}
|
||||||
|
@ -2570,7 +2568,7 @@ maybe_t<wcstring> reader_readline(int nchars) {
|
||||||
// Clear the pager if necessary.
|
// Clear the pager if necessary.
|
||||||
bool focused_on_search_field = (data->active_edit_line() == &data->pager.search_field_line);
|
bool focused_on_search_field = (data->active_edit_line() == &data->pager.search_field_line);
|
||||||
if (command_ends_paging(c, focused_on_search_field)) {
|
if (command_ends_paging(c, focused_on_search_field)) {
|
||||||
clear_pager();
|
clear_pager(data);
|
||||||
}
|
}
|
||||||
// fwprintf(stderr, L"\n\nchar: %ls\n\n", describe_char(c).c_str());
|
// fwprintf(stderr, L"\n\nchar: %ls\n\n", describe_char(c).c_str());
|
||||||
|
|
||||||
|
@ -2845,7 +2843,7 @@ maybe_t<wcstring> reader_readline(int nchars) {
|
||||||
case R_EXECUTE: {
|
case R_EXECUTE: {
|
||||||
// If the user hits return while navigating the pager, it only clears the pager.
|
// If the user hits return while navigating the pager, it only clears the pager.
|
||||||
if (data->is_navigating_pager_contents()) {
|
if (data->is_navigating_pager_contents()) {
|
||||||
clear_pager();
|
clear_pager(data);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2854,7 +2852,7 @@ maybe_t<wcstring> reader_readline(int nchars) {
|
||||||
|
|
||||||
// The user may have hit return with pager contents, but while not navigating them.
|
// The user may have hit return with pager contents, but while not navigating them.
|
||||||
// Clear the pager in that event.
|
// Clear the pager in that event.
|
||||||
clear_pager();
|
clear_pager(data);
|
||||||
|
|
||||||
// We only execute the command line.
|
// We only execute the command line.
|
||||||
editable_line_t *el = &data->command_line;
|
editable_line_t *el = &data->command_line;
|
||||||
|
@ -3310,7 +3308,7 @@ maybe_t<wcstring> reader_readline(int nchars) {
|
||||||
|
|
||||||
// End paging upon inserting into the normal command line.
|
// End paging upon inserting into the normal command line.
|
||||||
if (el == &data->command_line) {
|
if (el == &data->command_line) {
|
||||||
clear_pager();
|
clear_pager(data);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// This can happen if the user presses a control char we don't recognize. No
|
// This can happen if the user presses a control char we don't recognize. No
|
||||||
|
|
Loading…
Reference in a new issue