folke / noice.nvim

💥 Highly experimental plugin that completely replaces the UI for messages, cmdline and the popupmenu.
Apache License 2.0
4.29k stars 100 forks source link

bug: Invalid 'end_col': out of range #875

Closed s1n7ax closed 2 months ago

s1n7ax commented 3 months ago

Did you check docs and existing issues?

Neovim version (nvim -v)

v0.11.0-dev+0e3e1e6

Operating system/version

NixOs

Describe the bug

This is a weird one. When I update the store reducers in Redux, I'm keep seeing this error. But not anywhere else in the entire project. Only withing that reducer object. I can see the same behavior in neovim 0.9.5 version as well.

https://github.com/folke/noice.nvim/assets/18459807/4fec4a6e-e74d-47df-aea1-71afedfc28ab

Stack trace:

stack traceback:
    ...ax/.local/share/nvim/lazy/nui.nvim/lua/nui/text/init.lua:78: in function 'highlight'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/text/init.lua:116: in function 'highlight'
    ...ax/.local/share/nvim/lazy/nui.nvim/lua/nui/line/init.lua:58: in function 'highlight'
    ...ax/.local/share/nvim/lazy/nui.nvim/lua/nui/line/init.lua:73: in function 'render'
    ...ocal/share/nvim/lazy/noice.nvim/lua/noice/text/block.lua:98: in function 'render'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/view/init.lua:275: in function 'render'
    ....local/share/nvim/lazy/noice.nvim/lua/noice/view/nui.lua:279: in function 'show'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/view/init.lua:155: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/view/init.lua:153>
    [C]: in function 'xpcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:149: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:134>
    ...local/share/nvim/lazy/noice.nvim/lua/noice/view/init.lua:162: in function 'display'
    .../share/nvim/lazy/noice.nvim/lua/noice/message/router.lua:227: in function <.../share/nvim/lazy/noice.nvim/lua/noice/message/router.lua:160>
    [C]: in function 'xpcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:149: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:134>
    [C]: in function 'pcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/init.lua:146: in function ''
    vim/_editor.lua: in function ''
    vim/_editor.lua: in function <vim/_editor.lua:0>
...ax/.local/share/nvim/lazy/nui.nvim/lua/nui/text/init.lua:74: Invalid 'end_col': out of range

For the failing call, I receive following values to self.extmark

https://github.com/MunifTanjim/nui.nvim/blob/a2bc1e9d0359caa5d11ad967cd1e30e8d4676226/lua/nui/text/init.lua?plain=1#L73

{
  end_col = 372,
  hl_group = "LspSignatureActiveParameter"
}

Here is the sample project I'm using: https://github.com/s1n7ax/temp-noice-nvim-issue

This is my config: https://github.com/s1n7ax/lazyvim-dotnvim

Let me know if you need more information to debug

More Info:

function Text:highlight(bufnr, ns_id, linenr, byte_start)
  if not self.extmark then
    return
  end

  self.extmark.end_col = byte_start + self:length()

  local success, result = pcall(function()
    self.extmark.id =
      vim.api.nvim_buf_set_extmark(bufnr, _.ensure_namespace_id(ns_id), linenr - 1, byte_start, self.extmark)
  end)

  if not success then
    vim.print({
      text = self._content,
      bufnr = bufnr,
      ns_id = ns_id,
      linenr = linenr,
      byte_start = byte_start,
      extmark = self.extmark,
    })
  end
end

Printed values:

{
  bufnr = 38,
  byte_start = 12,
  extmark = {
    end_col = 373,
    hl_group = "LspSignatureActiveParameter"
  },
  linenr = 7,
  ns_id = 48,
  text = ""
}
joalof commented 2 months ago

Strange, I'm running into this error as well. It triggers in Julia code when lsp signature help is invoked (using LanguageServer.jl) specifically for structs. MWE:

struct Point 
    x::Float64
    y::Float64
end

p = Point(

Putting the cursor in insert mode after Point( will trigger the error. Noice log says:

...ch/.local/share/nvim/lazy/nui.nvim/lua/nui/text/init.lua:73: Invalid 'end_col': out of range

stack traceback:
    [C]: in function 'pcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:144: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:143>
    [C]: in function 'nvim_buf_set_extmark'
    ...ch/.local/share/nvim/lazy/nui.nvim/lua/nui/text/init.lua:73: in function 'highlight'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/text/init.lua:116: in function 'highlight'
    ...ch/.local/share/nvim/lazy/nui.nvim/lua/nui/line/init.lua:58: in function 'highlight'
    ...ch/.local/share/nvim/lazy/nui.nvim/lua/nui/line/init.lua:73: in function 'render'
    ...
    [C]: in function 'xpcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:149: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:134>
    ...local/share/nvim/lazy/noice.nvim/lua/noice/view/init.lua:163: in function 'display'
    .../share/nvim/lazy/noice.nvim/lua/noice/message/router.lua:227: in function <.../share/nvim/lazy/noice.nvim/lua/noice/message/router.lua:160>
    [C]: in function 'xpcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:149: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:134>
    [C]: in function 'pcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/init.lua:146: in function ''
    vim/_editor.lua: in function ''
    vim/_editor.lua: in function <vim/_editor.lua:0>
GiovanePS commented 2 months ago

Same here with LSP for Solidity: nomicfoundation-solidity-language-server.

Debian 12. Neovim v0.10.0

I've create that minimal configuration:

-- init.lua
vim.g.mapleader = " "
vim.g.maplocalleader = " "

-- Lazy.nvim plugin manager bootstrap
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
    vim.fn.system({
        "git",
        "clone",
        "--filter=blob:none",
        "https://github.com/folke/lazy.nvim.git",
        "--branch=stable", -- latest stable release
        lazypath,
    })
end
vim.opt.rtp:prepend(lazypath)

-- Lazy setup
require("lazy").setup({
    {
        "folke/noice.nvim",
        dependencies = { "MunifTanjim/nui.nvim" },
        config = function()
            require("noice").setup({})
        end,
    },
    -- LSPConfig
    {
        "neovim/nvim-lspconfig",
        config = function()
            local lspconfig = require("lspconfig")
            local configs = require("lspconfig.configs")

            if not configs.solidity then
                configs.solidity = {
                    default_config = {
                        cmd = {
                            "/home/gio/.local/share/nvim/mason/bin/nomicfoundation-solidity-language-server",
                            "--stdio",
                        },
                        filetypes = { "solidity" },
                        root_dir = lspconfig.util.find_git_ancestor,
                        single_file_support = true,
                    },
                }
            end

            lspconfig.solidity.setup({})
        end,
    },
})

Solidity code:

pragma solidity >=0.5.0 <0.6.0;

contract issueTesting {
    event newEvent(int variable);

    int test = 0;
}

https://github.com/user-attachments/assets/61782da4-a01f-4d80-a7d9-4d83d822f941

Nice to see on that video it's the error only occurs when the semicolon is present.

strack trace through NoiceDebug:

{ "msg_showcmd", "sl:1", "tick:43", false, { { 0, "k" } } }
{ "msg_showcmd", "sl:1", "tick:46", false, { { 0, "j" } } }
{ "msg_showcmd", "sl:1", "tick:48", false, { { 0, ":" } } }
{ "cmdline_show", "sl:1", "tick:49", "mode:c", { { 0, "" } } }
{ "cmdline_show", "sl:1", "tick:52", "mode:c", { { 0, "N" } } }
{ "cmdline_show", "sl:1", "tick:54", "mode:c", { { 0, "" } } }
{ "cmdline_hide", "sl:1", "tick:56", false, 1 }
{ "msg_showcmd", "sl:1", "tick:57", false, { { 0, "a" } } }
{ "msg_showmode", "sl:1", "tick:58", false, { { 9, "-- INSERÇÃO --" } } }
[hover] "...io/.local/share/nvim/lazy/nui.nvim/lua/nui/text/init.lua:73: Invalid 'col': out of range"
stack traceback:
    ...local/share/nvim/lazy/noice.nvim/lua/noice/view/init.lua:141: in function 'debug'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/view/init.lua:160: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/view/init.lua:159>
    [C]: in function 'pcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:64: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:56>
    [C]: in function 'pcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:144: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:143>
    [C]: in function 'nvim_buf_set_extmark'
    ...io/.local/share/nvim/lazy/nui.nvim/lua/nui/text/init.lua:73: in function 'highlight'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/text/init.lua:116: in function 'highlight'
    ...io/.local/share/nvim/lazy/nui.nvim/lua/nui/line/init.lua:58: in function 'highlight'
    ...io/.local/share/nvim/lazy/nui.nvim/lua/nui/line/init.lua:73: in function 'render'
    ...
    [C]: in function 'xpcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:149: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:134>
    ...local/share/nvim/lazy/noice.nvim/lua/noice/view/init.lua:163: in function 'display'
    .../share/nvim/lazy/noice.nvim/lua/noice/message/router.lua:227: in function <.../share/nvim/lazy/noice.nvim/lua/noice/message/router.lua:160>
    [C]: in function 'xpcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:149: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:134>
    [C]: in function 'pcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/init.lua:146: in function ''
    vim/_editor.lua: in function ''
    vim/_editor.lua: in function <vim/_editor.lua:0>
[hover] "...io/.local/share/nvim/lazy/nui.nvim/lua/nui/text/init.lua:73: Invalid 'end_col': out of range"
stack traceback:
    ...local/share/nvim/lazy/noice.nvim/lua/noice/view/init.lua:141: in function 'debug'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/view/init.lua:160: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/view/init.lua:159>
    [C]: in function 'pcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:64: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:56>
    [C]: in function 'pcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:144: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:143>
    [C]: in function 'nvim_buf_set_extmark'
    ...io/.local/share/nvim/lazy/nui.nvim/lua/nui/text/init.lua:73: in function 'highlight'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/text/init.lua:116: in function 'highlight'
    ...io/.local/share/nvim/lazy/nui.nvim/lua/nui/line/init.lua:58: in function 'highlight'
    ...io/.local/share/nvim/lazy/nui.nvim/lua/nui/line/init.lua:73: in function 'render'
    ...
    [C]: in function 'xpcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:149: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:134>
    ...local/share/nvim/lazy/noice.nvim/lua/noice/view/init.lua:163: in function 'display'
    .../share/nvim/lazy/noice.nvim/lua/noice/message/router.lua:227: in function <.../share/nvim/lazy/noice.nvim/lua/noice/message/router.lua:160>
    [C]: in function 'xpcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:149: in function <...local/share/nvim/lazy/noice.nvim/lua/noice/util/call.lua:134>
    [C]: in function 'pcall'
    ...local/share/nvim/lazy/noice.nvim/lua/noice/util/init.lua:146: in function ''
    vim/_editor.lua: in function ''
    vim/_editor.lua: in function <vim/_editor.lua:0>
{ "msg_showmode", "sl:1", "tick:67", false, {} }
{ "msg_showcmd", "sl:1", "tick:68", false, { { 0, ":" } } }
{ "cmdline_show", "sl:1", "tick:69", "mode:c", { { 0, "" } } }
{ "cmdline_show", "sl:1", "tick:72", "mode:c", { { 0, "N" } } }
{ "cmdline_show", "sl:1", "tick:74", "mode:c", { { 0, "No" } } }
{ "cmdline_show", "sl:1", "tick:76", "mode:c", { { 0, "Noi" } } }
{ "cmdline_show", "sl:1", "tick:78", "mode:c", { { 0, "Noic" } } }
{ "cmdline_show", "sl:1", "tick:80", "mode:c", { { 0, "Noice" } } }
{ "cmdline_show", "sl:1", "tick:82", "mode:c", { { 0, "NoiceD" } } }
{ "cmdline_show", "sl:1", "tick:84", "mode:c", { { 0, "NoiceDebug" } } }
{ "cmdline_hide", "sl:1", "tick:86", false, 1 }