diff options
-rw-r--r-- | src/nvim/popupmnu.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/nvim/popupmnu.c b/src/nvim/popupmnu.c index 561cb846f1..a715129f8a 100644 --- a/src/nvim/popupmnu.c +++ b/src/nvim/popupmnu.c @@ -305,22 +305,25 @@ void pum_display(pumitem_T *array, int size, int selected, bool array_changed, && (col < Columns - p_pw || col < Columns - max_width))) { // align right pum edge with "col" - if (curwin->w_p_rl) { + if (curwin->w_p_rl + && col < max_width + pum_scrollbar + 1) { pum_col = col + max_width + pum_scrollbar + 1; if (pum_col >= Columns) { pum_col = Columns - 1; } - } else { - pum_col = col - max_width - pum_scrollbar; - if (pum_col < 0) { - pum_col = 0; + } else if (!curwin->w_p_rl) { + if (col > Columns - max_width - pum_scrollbar) { + pum_col = col - max_width - pum_scrollbar; + if (pum_col < 0) { + pum_col = 0; + } } } if (curwin->w_p_rl) { - pum_width = W_ENDCOL(curwin) - pum_col - pum_scrollbar + 1; + pum_width = pum_col - pum_scrollbar + 1; } else { - pum_width = pum_col - pum_scrollbar; + pum_width = Columns - pum_col - pum_scrollbar; } if (pum_width < p_pw) { |