nvim-lualine/lualine.nvim

Bug: Status line filled with `^^^^^^`

carlesba opened this issue · 8 comments

Self Checks

  • I'm using the latest lualine.
  • I didn't find the issue in existing issues or PRs.

How to reproduce the problem

Setup lualine with a theme (see minimal config).

After a few interactions in the editor, lualine feels all the gaps in the status line with ^^^^^^^^^^^^^^^^^^^^^^

Expected behaviour

Status line should not show ^^^^^^^^^^^^^

Actual behaviour

Status line shows ^^^^^^^^^^^^^^^^^^^

Minimal config to reproduce the issue

referencing the theme like this shows the bug

local evergreen =  {fg = "#7A8478",  bg = "#343F44"}

local theme = evergreen

lualine.setup({
        options = {
          theme = {
            normal = {a = theme, b = theme, c = theme},
            insert = {a = theme, b = theme},
            visual = {a = theme, b = theme},
            command = {a = theme, b = theme},
            replace = {a = theme, b = theme},
            inactive = {a = theme, b = theme, c = theme}
          },
        },
})

If you define a theme without referencing other table works fine

local theme =  {fg = "#7A8478",  bg = "#343F44"}

lualine.setup({
        options = {
          theme = {
            normal = {a = theme, b = theme, c = theme},
            insert = {a = theme, b = theme},
            visual = {a = theme, b = theme},
            command = {a = theme, b = theme},
            replace = {a = theme, b = theme},
            inactive = {a = theme, b = theme, c = theme}
          },
        },
})

Additional information

After some more debugging. Doesn't seem related to the theme. Still, I'm getting that ^^^^^^^^^^^^^^^^ all the time.
I'm only using lualine plugins:

require("lualine").setup(
      {
        options = {
          theme = {
            normal = {a = theme, b = theme, c = theme},
            insert = {a = theme, b = theme},
            visual = {a = theme, b = theme},
            command = {a = theme, b = theme},
            replace = {a = theme, b = theme},
            inactive = {a = theme, b = theme, c = theme}
          },
          section_separators = {"", ""},
          component_separators = {"", ""}
        },
        sections = {
          lualine_a = {
            -- {"branch", color = {fg = theme.statusline_2}}
          },
          lualine_b = {
            {
              "filename",
              file_status = true, -- Displays file status (readonly status, modified status)
              newfile_status = false, -- Display new file status (new file means no write after created)
              path = 3, -- 0: Just the filename
              -- 1: Relative path
              -- 2: Absolute path
              -- 3: Absolute path, with tilde as the home directory
              -- 4: Filename and parent dir, with tilde as the home directory

              shorting_target = 40, -- Shortens path to leave 40 spaces in the window
              -- for other components. (terrible name, any suggestions?)
              symbols = {
                modified = "[+]", -- Text to show when the file is modified.
                readonly = "[-]", -- Text to show when the file is non-modifiable or readonly.
                unnamed = "[No Name]", -- Text to show for unnamed buffers.
                newfile = "[New]" -- Text to show for newly created file before first write
              }
            },
            "diff"
          },
          lualine_c = {
            -- {
            --   require("noice").api.status.search.get,
            --   cond = require("noice").api.status.search.has,
            --   color = {fg = "#ff9e64"}
            -- }
          },
          -- lualine_x = {"branch"},
          lualine_x = {
            "searchcount"
          },
          lualine_y = {
            {
              "diagnostics",
              sources = {"nvim_lsp"},
              -- Displays diagnostics for the defined severity types
              sections = {"error", "warn", "info", "hint"},
              symbols = {error = "", warn = "", info = "", hint = ""},
              -- icons_enabled = true,
              colored = true, -- Displays diagnostics status in color if set to true.
              update_in_insert = false, -- Update diagnostics in insert mode.
              always_visible = true -- Show diagnostics even if there are none.
            }
          },
          lualine_z = {"location", "progress"}
        }
      }
    )
gzbd commented

I'm having the same problem, but the ^ chars appear only when the floating window is displayed (cmp completion, hovers etc).

Here's a screenshot with the issue

Screenshot 2023-12-18 at 12 59 13

There must be some exception happening somewhere. This looks like the kind of output Lua would output when an error happens. I couldn't identify the source.

I've had this bug for a few months now. I've yet to create a minimal reproducible example, but finally narrowed it down to this at least this combination that triggers it for me:

  1. require('lualine').setup() is called a second time
  2. There are separators set for the outer most sections on the outside, so either
    • lualine_a = { { <component> , separator = { left = "<anything in here>" }
    • lualine_z = { { <component> , separator = { right = "<anything in here>" }
  3. nvim-treesitter-context is open, guessing from the others probably other floating windows do the trick too.
gzbd commented

Today, I did a check with the latest version of nvim (compiled from source) and there bug is no longer there. I guess that the problem was somewhere in the nvim.

Can confirm neovim 0.10 seems to fix the issue, so maybe close this?

thanks!

I'm still having the issue. I'm aware 0.10 is coming but latest stable version is yet 0.9.5.
Keeping this opened until I can verify it's fixed.