rainbow-delimiters.nvim icon indicating copy to clipboard operation
rainbow-delimiters.nvim copied to clipboard

[Bug]: healthcheck fails

Open PuppyGirlBelly opened this issue 1 year ago • 3 comments

Neovim version

0.9.4

Language affected

All

Query

rainbow-delimiters-react

Strategy

No response

Description

Hi, for some reason the healthcheck fails when I have the javascript query rule 'rainbow-delimiters-react' enabled. When I comment it out, the healthcheck passes without issue.

Healthcheck Output

==============================================================================
rainbow-delimiters: require("rainbow-delimiters.health").check()

- ERROR Failed to run healthcheck for "rainbow-delimiters" plugin. Exception:
  function health#check, line 25
  Vim(eval):E5108: Error executing lua ...im/0.9.4/share/nvim/runtime/lua/vim/treesitter/query.lua:259: query: invalid node type at position 1260 for language javascript
  stack traceback:
  [C]: in function '_ts_parse_query'
  ...im/0.9.4/share/nvim/runtime/lua/vim/treesitter/query.lua:259: in function 'get'
  ...ainbow-delimiters.nvim/lua/rainbow-delimiters/health.lua:63: in function 'check_query'
  ...ainbow-delimiters.nvim/lua/rainbow-delimiters/health.lua:160: in function 'check'
  [string "luaeval()"]:1: in main chunk

Lazy Settings

Just a note, I like to include as many default settings as I can to make it easier to change settings without looking at documentation. So that is why there are so many comments and settings in my configuration.

{
    'hiphish/rainbow-delimiters.nvim',
    dependencies = "nvim-treesitter/nvim-treesitter",
    event = "VeryLazy",
    config = function()
        local rainbow = require 'rainbow-delimiters'

        vim.g.rainbow_delimiters = {
            -- Each language is based on a treesitter language name.

            -- Defines the highlighting strategy.
            strategy = {
                --[[
                'global' - Highlight all delimiters, updates with document
                           changes.
                'local'  - Highlight only the subtree that contains the cursor,
                           updates when the cursor moves.
                --]]
                -- Default Strategy
                [''] = rainbow.strategy['global'],
                html = rainbow.strategy['local'],
                latex = function()
                    -- Disabled for very large files,
                    if vim.fn.line('$') > 10000 then
                        return nil
                        -- global strategy for large files,
                    elseif vim.fn.line('$') > 1000 then
                        return rainbow.strategy['global']
                    end
                    -- local strategy otherwise
                    return rainbow.strategy['local']
                end
            },

            -- Defines what to match
            query = {
                -- Default Query - Reasonable set of parenthesis and similar
                -- delimiters in most languages
                [''] = 'rainbow-delimiters',
                -- Matches `\begin` and `\end` instructions
                latex = 'rainbow-blocks',
                -- Matches keywords like `function` and `end` as well as
                -- parenthesis
                lua = 'rainbow-blocks',
                -- Includes React support
                javascript = 'rainbow-delimiters-react',
                --[[
                -- Only parenthesis without React tags
                javascript = 'rainbow-parens',
                -- Only typescript highlighting without React tags
                tsx = 'rainbow-parens',
                --]]
                -- Matches keywords like `begin` and `end` as well as
                -- parenthesis
                verilog = 'rainbow-blocks',
            },
            highlight = {
                'RainbowDelimiterRed',
                'RainbowDelimiterYellow',
                'RainbowDelimiterBlue',
                'RainbowDelimiterOrange',
                'RainbowDelimiterGreen',
                'RainbowDelimiterViolet',
                'RainbowDelimiterCyan',
            },
            --[[
            blacklist = {
                'c',
                'cpp',
            },
            whitelist = {
                'python',
                'javascript',
            },
            log = {
                file = '~/.local/state/lvim/rainbow-delimiters.log',
                level = vim.log.levels.DEBUG,
            },
            --]]
        }
    end
}

PuppyGirlBelly avatar Nov 08 '23 16:11 PuppyGirlBelly

Which parsers do you have installed? You can check by typing: :checkhealth nvim-treesitter<CR>

I think you need at least both javascript and jsx to get React tags working (I can see in nvim-treesitter, that javascript inherits queries from ecma and jsx, so you might be missing one of those?).

I am not sure if this is the problem, but the error makes it sound like there is some unknown query, so this is my guess at what's the problem.

Danielkonge avatar Nov 12 '23 22:11 Danielkonge

I took a look and I have javascript, tsx, typescript; however I can't seem to install a jsx as there doesn't seem to be a jsx parser supported in neovim-treesitter.

https://github.com/nvim-treesitter/nvim-treesitter#supported-languages

PuppyGirlBelly avatar Nov 13 '23 05:11 PuppyGirlBelly

I took a look and I have javascript, tsx, typescript; however I can't seem to install a jsx as there doesn't seem to be a jsx parser supported in neovim-treesitter.

https://github.com/nvim-treesitter/nvim-treesitter#supported-languages

I guess the jsx stuff should all be in the javascript parser then. I just saw here that they split up the jsx queries from the "standard" javascript queries.

I have checked this in my own Neovim setup now, and I don't get any errors from 'rainbow-delimiters-react'.

When you check the parsers, does everything look correct for javascript? (All checkmarks like here) Screenshot 2023-11-13 at 14 09 33

Have you tried updating your parsers via :TSUpdate<CR> and/or updating the nvim-treesitter plugin? I am on Neovim 0.10, but I can try to see if I can maybe reproduce this on 0.9.4 later, if you still get the error.

Danielkonge avatar Nov 13 '23 13:11 Danielkonge