nvim-notify icon indicating copy to clipboard operation
nvim-notify copied to clipboard

Avoid collision with the global status line

Open sassanh opened this issue 2 years ago • 8 comments
trafficstars

Similar issue: https://github.com/rcarriga/nvim-notify/issues/4

image

I'm using bottom up layout, and the notifications cover the status line. The value of these options in my setup may be relevant:

vim.opt.cmdheight = 0
vim.opt.laststatus = 3

Not sure if this is considered an issue with the plugin or if I just need to improve my setup.

sassanh avatar Apr 07 '23 10:04 sassanh

I have the same problem, i want to move the notification one row up.

Also it is visually displeasing, because it feels like it blinks. The status bar has a different color and that color suddenly changes two times.

ranomier avatar May 03 '23 11:05 ranomier

@sassanh This is a dirty fix:

diff --git a/lua/notify/stages/util.lua b/lua/notify/stages/util.lua
index cc68974..d20c6ae 100644
--- a/lua/notify/stages/util.lua
+++ b/lua/notify/stages/util.lua
@@ -88,6 +88,7 @@ function M.get_slot_range(direction)
   local top = vim.opt.tabline:get() == "" and 0 or 1
   local bottom = vim.opt.lines:get()
     - (vim.opt.cmdheight:get() + (vim.opt.laststatus:get() > 0 and 1 or 0))
+  local bottom = bottom - 1
   local left = 1
   local right = vim.opt.columns:get()
   if M.DIRECTION.TOP_DOWN == direction then

ranomier avatar May 03 '23 12:05 ranomier

I also have the same issue, @rcarriga. Is it possible to include this change into the plugin? I'll be happy to open a PR for this minor change.

dasupradyumna avatar Oct 13 '23 17:10 dasupradyumna

Hey guys, check out my PR and let me know if it fixes things for you.

Comment on the PR so Ronan can merge it sooner.

dasupradyumna avatar Nov 08 '23 07:11 dasupradyumna

For me, using fade_in_slide_out positions the notification correctly, while fade, slide, and static position it over the statusline.

Position with fade_in_slide_out 😄

Screenshot 2024-01-31 095455

Position with fade, slide, or static 😞

Screenshot 2024-01-31 095441

Not sure why the stages option affects the positioning of the notification.

nullromo avatar Jan 31 '24 17:01 nullromo

This override works perfectly fine for me:

  {
    "rcarriga/nvim-notify",
    config = vim.schedule(function()
      local override = function(direction)
        local top = 0
        local bottom = vim.opt.lines:get()
            - (vim.opt.cmdheight:get() + (vim.opt.laststatus:get() > 0 and 1 or 0))
        if vim.wo.winbar then
          bottom = bottom - 1
        end
        local left = 1
        local right = vim.opt.columns:get()
        if direction == "top_down" then
          return top, bottom
        elseif direction == "bottom_up" then
          return bottom, top
        elseif direction == "left_right" then
          return left, right
        elseif direction == "right_left" then
          return right, left
        end
        error(string.format("Invalid direction: %s", direction))
      end
      local util = require("notify.stages.util")
      util.get_slot_range = override
    end),
-- ...

tom-gora avatar Jul 12 '24 13:07 tom-gora

@tom-gora how are you setting the direction? In the docs, top_down is only a boolean config.

chardskarth avatar Jul 30 '24 12:07 chardskarth

@chardskarth Have a look at my dots: LINK. Essentially I stole some code from some places and cobbled together a nice solution. direction is not a key here - it is a parameter passed into override function that returns values for notify.stages.util.get_slot_range

https://github.com/user-attachments/assets/79459fac-50f9-4f9d-837b-3ed1c7469113

tom-gora avatar Jul 31 '24 11:07 tom-gora