Skip to content

Undefined global for builtins #1788

Open

Description

@ddickstein

How are you using the lua-language-server?

NeoVim

Which OS are you using?

Linux

What is the issue affecting?

Diagnostics/Syntax Checking

Expected Behaviour

I think I'm encountering the same issue as #1600. In my case it happens sporadically - reloading a lua file in Neovim will often randomly introduce or resolve this behavior.

I'm running version 3.6.4-1 installed from pacman.

Actual Behaviour

Seeing warnings on all builtins as "undefined global"

Reproduction steps

I'm not sure how to reproduce reliably - it seems to happen somewhat randomly when I load the buffer.

Additional Notes

No response

Log File

(I'm time-constrained at the moment but I plan to add this later)

Activity

  1. andrewferrier commented on Dec 28, 2022

    @andrewferrier

    Ditto - I'm seeing the same problem:

    MacOS 12.5.1
    NVIM v0.8.0
    Sumneko 3.6.3

  2. zenoli commented on Dec 29, 2022

    @zenoli

    Same for me. The problem sometimes disappears when I open certain lua files but it's hard to reproduce consistently.

    Ubuntu LTS 22.04
    Nvim v0.9.0-dev-47-gcfdb4cbad
    Sumneko v3.6.4

  3. sumneko commented on Jan 3, 2023

    @sumneko
    Collaborator
  4. caldwell-63 commented on Feb 9, 2023

    @caldwell-63

    Nothing really helpful there.

    In my case, out of all globals, I'm getting warnings only for the type standard function: Undefined global 'type'

    Really weird, I can't tell where is the root of the problem, is it the Language Server, nvim-lspconfig, the neovim lsp implementation, or something else.

  5. sumneko commented on Feb 13, 2023

    @sumneko
    Collaborator

    Nothing really helpful there.

    In my case, out of all globals, I'm getting warnings only for the type standard function: Undefined global 'type'

    Really weird, I can't tell where is the root of the problem, is it the Language Server, nvim-lspconfig, the neovim lsp implementation, or something else.

    Please open an issue about it.

  6. L3MON4D3 commented on Mar 10, 2023

    @L3MON4D3

    I've also had this issue, and for me explicitly extending Lua.workspace.library with one of the meta-directories worked, ie.

    nvim_lsp.lua_ls.setup {
        settings = {
            Lua = {
                workspace = {
                    library = vim.tbl_extend("keep",
                        -- this will probably vary depending on setup, not sure if plugins like mason even install it.
                        {"/usr/lib/lua-language-server/meta/template"},
                        -- and runtime-directories.
                        vim.api.nvim_get_runtime_file("", true)),
                },
            },
        },
    }

    (might have undesired consequences, but I haven't found any so far 🤷)

  7. sumneko commented on Mar 11, 2023

    @sumneko
    Collaborator

    Please try to startup server with parameters --meta=<WRITEABLE_PATH>.
    Maybe it generated meta files failed.

  8. L3MON4D3 commented on Mar 11, 2023

    @L3MON4D3

    Ah, yes you're right 👍
    cmd = {sumneko_binary, "--logpath", "/home/simon/.cache/lua-language-server/", "--metapath", "/home/simon/.cache/lua-language-server/meta/"} works perfectly, thank you!

  9. benjamineskola commented on Mar 31, 2023

    @benjamineskola

    I've encountered this when the directory lua-language-server is installed into is not writable by the user. As with the above comment I had to set logpath (or the LS failed to start at all) and metapath (or there would be these undefined global errors).

    Perhaps the defaults for logpath and metapath ought to be in a writable directory by default (like $XDG_CONFIG_HOME or $HOME/.cache or on macOS $HOME/Library/Caches?)

  10. godalming123 commented on Apr 20, 2023

    @godalming123

    For me when I use lsp-zero I do not get this error but with the kickstart.nvim default config I do? strange

  11. added
    enhancementNew feature or request
    and removed
    Info NeededMore information is required
    on Apr 24, 2023
  12. wsdjeg commented on Jun 19, 2023

    @wsdjeg

    I got same issue in win 11, and fix by this suggession, #1788 (comment)

  13. idbrii commented on Aug 10, 2023

    @idbrii

    L3MON4D3's comment helped solve this undefined built-ins for me too, but since I'm using vim-lsp-settings, I solved it with this in my vimrc:

    call lsp_settings#set('sumneko-lua-language-server', 'args', ["--metapath", expand('~/.vim-cache/lsp/meta')])
    
  14. massimopavoni commented on Jan 31, 2025

    @massimopavoni

    I'm sorry if this is too late, but I would think this is a relevant issue to the problem I'm also seeing:

    -- Require the hello-world module
    local hello_world = require("hello-world")
    
    -- Define a module named hello-world. This module should return a single
    -- function named hello that takes no arguments and returns a string.
    
    describe("hello-world", function()
    	it("says hello world", function()
    		local result = hello_world.hello()
    		assert.are.equal("Hello, World!", result)
    	end)
    end)
    

    This hello-world_spec.lua gives me warnings for Undefined global 'describe'., Undefined global 'it'. and Undefined field 'are'. while using lua_ls in mason within the LazyVim distro.

    I tried setting the command in the lsp config without much success. How can I better investigate the problem?
    This also happens on some example configs from LazyVim, e.g. the supertab extension gives an Undefined type or alias 'cmp.ConfigSchema'.

  15. tkatter commented on Apr 9, 2026

    @tkatter

    Chiming in to say that the solution suggested here still worked for me 3 years later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions