Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vim global variable check throws error in lua (neovim plugin development)

I'm trying write a neovim plugin using lua, when checking if a variable exists, lua throws an error like: Undefined variable: g:my_var

Method 1:

local function open_bmax_term()
    if (vim.api.nvim_eval("g:my_var")) then
        print('has the last buff')
    else
        print('has no the last buff')
    end
end

Method 2:


local function open_bmax_term()
    if (vim.api.nvim_get_var("my_var")) then
        print('has the last buff')
    else
        print('has no the last buff')
    end
end

this is a similar function written in viml which does works: (this does not throw any error)

fun! OpenBmaxTerm()

    if exists("g:my_var")
        echo "has the last buff"
    
    else
        echo "has no the last buff"
    endif
endfun

any idea how to get this working in lua? I tried wrapping the condition inside a pcall which had an effect like making it always truthy.

like image 343
Bmax Avatar asked Aug 25 '26 14:08

Bmax


1 Answers

You can use the global g: dictionary via vim.g to reference your variable:

if vim.g.my_var == nil then
    print("g:my_var does not exist")
else
    print("g:my_var was set to "..vim.g.my_var)
end

You can reference :h lua-vim-variables to see other global Vim dictionaries that are available as well!

like image 147
andrewk Avatar answered Aug 27 '26 03:08

andrewk



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!