rcarriga / nvim-notify

A fancy, configurable, notification manager for NeoVim
MIT License
2.99k stars 78 forks source link

bug(vim-visual-multi): Notification window doesn't expand or have black color #285

Open ilias777 opened 1 month ago

ilias777 commented 1 month ago

The notifications that comes from vim-visual-multi are not expand if stages = 'slide' in the options and it's not possible to see the content.

slide_1 slide_2

If stages is set to fade the color is black or sometimes the same color as the background.

black_1 black_2

If you look here closely the notification color is same as the background. After the l in the second line you can see the icon from the notification:

same_as_bg

Steps to reproduse:

  1. Create a file repro.lua
    
    vim.env.LAZY_STDPATH = ".repro"
    load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))()

vim.g.mapleader = ',' vim.g.maplocalleader = ','

vim.opt.autoindent = true vim.opt.smartindent = true vim.opt.tabstop = 4 vim.opt.shiftwidth = 4 vim.opt.softtabstop = 4 vim.opt.expandtab = true

require("lazy.minit").repro({ spec = { { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate', config = function() require('nvim-treesitter.configs').setup({ ensure_installed = { 'lua' }, }) end }, { "mg979/vim-visual-multi", branch = "master", event = 'VeryLazy', keys = { { 'cp', 'vip(VM-Visual-Cursors)', desc = 'Create multicursors inner paragraph' }, { '', ':VMSearch ', mode = 'x', desc = 'Search & create multicursors in visual mode' }, { '', ':%VMSearch ', desc = 'Search & create multicursors' }, { '', '(VM-Visual-Cursors)', mode = 'x', desc = 'Create multicursors in visual mode' }, }, init = function() vim.g.VM_maps = { ['Motion ,'] = '', ['Select l'] = '', ['Select h'] = '', ['Goto Next'] = '', ['Goto Prev'] = '', -- ['I BS'] = '', } end }, { "folke/which-key.nvim", opts = { preset = 'helix', }, }, { "folke/noice.nvim", dependencies = { "MunifTanjim/nui.nvim", { "rcarriga/nvim-notify", opts = { render = 'wrapped-compact', stages = 'slide, max_height = function() return math.floor(vim.o.lines 0.75) end, max_width = function() return math.floor(vim.o.columns 0.75) end, }, }, }, opts = {} }, }, })


2. Run: nvim -u repro.lua.
3. After lazy installing the plugins rerun Neovim.
4. Run again the command `nvim -u repro.lua`. 
5. Open the file with the command `:e repro.lua`.
6. Press following keys: `<C-n>` to start vim-visual-multi and then the keys: `\\C` to open the notification window to switch the case in this example.
7. You will see that the notification window is not expanding.
8. Try to change the `stages` to `fade` or `fade_in_slide_out`.
9. Press the same keys like in step 3.
10. The notification window now is black or the same color as the background.

Thank you for any help. 🙂
folke commented 1 month ago

After further looking into this, this is indeed something that worked before. Reason it used to work, is that in Noice I hacked into vim.cmd.redraw and any of the getchar and input functions. When I detected that we were right before or inside such a function, I replaced stage to static.

I did it like that, because I thought that when Neovim was waiting for input, the main loop was blocked.

Recently I discovered this is simply not the case.

tbh, this hack was something I probably never should have done.

The correct fix is to add vim.cmd.redraw() calls when needed inside nvim-notify.