Open5

Neovim の設定やプラグイン作りに使える Tips

futsuuufutsuuu

vim.api.nvim_get_hlfg などの数値を RGB に変換する

---@type integer
local fg = vim.api.nvim_get_hl(0, { name = "Normal" }).fg
print(("#%06x"):format(fg))

C と同じ埋め込み方

futsuuufutsuuu
lua/my_module.lua
local M = {
  foo = require("my_module.foo")
}
return M

こうすると、require("my_module") とすると、require("my_module.foo") も実行される。

これを、require("my_module").foo が実行されるまで require("my_module.foo") を実行しない方法

lua/my_module.lua
local M = setmetatable({
    foo = nil, ---@module 'my_module.foo'
  }, {
  __index = function(t, k)
    t[k] = require("my_module." .. k)
    return t[k]
  end,
})
return M

ダミーを入れておくことで、language server での補完も効くようになる

futsuuufutsuuu

nvim --headless で実行されているかどうか

vim.tbl_contains(vim.v.argv, "--headless")

-- or

#vim.api.nvim_list_uis() == 0