diff options
| -rw-r--r-- | src/nvim/popupmnu.c | 2 | ||||
| -rw-r--r-- | test/functional/ui/float_spec.lua | 47 | 
2 files changed, 48 insertions, 1 deletions
| diff --git a/src/nvim/popupmnu.c b/src/nvim/popupmnu.c index 7d452d6797..f620517aff 100644 --- a/src/nvim/popupmnu.c +++ b/src/nvim/popupmnu.c @@ -440,7 +440,7 @@ void pum_redraw(void)    }    if (ui_has(kUIMultigrid)) {      const char *anchor = pum_above ? "SW" : "NW"; -    int row_off = pum_above ? pum_height : 0; +    int row_off = pum_above ? -pum_height : 0;      ui_call_win_float_pos(pum_grid.handle, -1, cstr_to_string(anchor),                            pum_anchor_grid, pum_row-row_off, pum_col-col_off,                            false, pum_grid.zindex); diff --git a/test/functional/ui/float_spec.lua b/test/functional/ui/float_spec.lua index f3b840da21..3a9dcb8b01 100644 --- a/test/functional/ui/float_spec.lua +++ b/test/functional/ui/float_spec.lua @@ -2901,6 +2901,53 @@ describe('float window', function()          end        end) +      it('command menu rendered above cursor (pum_above)', function() +        command('set wildmenu wildmode=longest:full wildoptions=pum') +        feed(':sign u<tab>') +        if multigrid then +          screen:expect{grid=[[ +          ## grid 1 +            [2:----------------------------------------]| +            [2:----------------------------------------]| +            [2:----------------------------------------]| +            [2:----------------------------------------]| +            [2:----------------------------------------]| +            [2:----------------------------------------]| +            [3:----------------------------------------]| +          ## grid 2 +                                                    | +            {0:~                                       }| +            {0:~                                       }| +            {0:~                                       }| +            {0:~                                       }| +            {0:~                                       }| +          ## grid 3 +            :sign un^                                | +          ## grid 4 +            {7:            }| +            {12:~           }| +            {12:~           }| +            {12:~           }| +          ## grid 5 +            {1: undefine       }| +            {1: unplace        }| +          ]], float_pos={ +            [5] = {{id = -1}, "SW", 1, 6, 5, false, 250}; +            [4] = {{id = 1001}, "NW", 1, 2, 5, true, 50}; +          }} +        else +          screen:expect{grid=[[ +                                                    | +            {0:~                                       }| +            {0:~    }{7:            }{0:                       }| +            {0:~    }{12:~           }{0:                       }| +            {0:~    }{1: undefine       }{0:                   }| +            {0:~    }{1: unplace        }{0:                   }| +            :sign un^                                | +          ]]} +        end +      end) +        it('with ext_popupmenu', function()          screen:set_option('ext_popupmenu', true)          feed('ix ') | 
