improve the size of completions page to show the entire prompt

This commit is contained in:
slama
2018-02-04 16:04:43 +09:00
committed by ridiculousfish
parent 9ba6b62791
commit 27c1c06ed4
3 changed files with 9 additions and 4 deletions

View File

@@ -434,9 +434,11 @@ static void reader_repaint() {
std::vector<int> indents = data->indents;
indents.resize(len);
// Re-render our completions page if necessary. We set the term size to 1 less than the true
// term height. This means we will always show the (bottom) line of the prompt.
data->pager.set_term_size(maxi(1, common_get_width()), maxi(1, common_get_height() - 1));
// Re-render our completions page if necessary. We set the term size to less than the true
// term height by the number of prompt lines. This means we will always show the entire line of
// the prompt.
data->pager.set_term_size(maxi(1, common_get_width()),
maxi(1, common_get_height() - (int)calc_prompt_lines(full_line)));
data->pager.update_rendering(&data->current_page_rendering);
bool focused_on_pager = data->active_edit_line() == &data->pager.search_field_line;

View File

@@ -346,7 +346,7 @@ static prompt_layout_t calc_prompt_layout(const wchar_t *prompt, prompt_type_t w
return prompt_layout;
}
static size_t calc_prompt_lines(const wcstring &prompt) {
size_t calc_prompt_lines(const wcstring &prompt) {
// Hack for the common case where there's no newline at all. I don't know if a newline can
// appear in an escape sequence, so if we detect a newline we have to defer to
// calc_prompt_width_and_lines.

View File

@@ -240,4 +240,7 @@ class cached_esc_sequences_t {
// change by calling `cached_esc_sequences.clear()`.
extern cached_esc_sequences_t cached_esc_sequences;
// Calculates the number of prompt lines.
size_t calc_prompt_lines(const wcstring &prompt);
#endif