[!IMPORTANT] While this was made with an aim to be thorough, you should always double-check the WezTerm Lua Reference for any missing or unclear types.
Credits | Roadmap | Discussions
This project aims to provide LuaCATS-like Lua Language Server type annotations for your WezTerm config.
https://github.com/user-attachments/assets/02c261ac-5744-4f34-b767-48095386e21b
https://github.com/user-attachments/assets/3693aedf-b790-4618-b969-1b712010bd4f
config.color_scheme)wezterm.on())folke/lazydev.nvim~/.config/wezterm, and editing your config in that directoryFor Neovim users, we recommend using
folke/lazy.nvim as a package manager, to be used with folke/lazydev.nvim:
{
'folke/lazydev.nvim',
ft = 'lua',
dependencies = {
{
'DrKJeff16/wezterm-types',
lazy = true,
version = false, -- Get the latest version
},
},
opts = {
library = {
-- Other library configs...
{ path = 'wezterm-types', mods = { 'wezterm' } },
},
},
}
[!TIP] If you download this repo under a diferent name, you can use the following instead:
{ 'folke/lazydev.nvim', ft = 'lua', dependencies = { { 'DrKJeff16/wezterm-types', lazy = true, name = '<my_custom_name>', -- CUSTOM DIRECTORY NAME version = false, -- Get the latest version }, }, opts = { library = { -- Other library configs... { path = '<my_custom_name>', mods = { 'wezterm' } }, -- MAKE SURE TO MATCH THE PLUGIN DIRECTORY'S NAME }, }, }
You can now install this with LuaRocks:
luarocks install wezterm-types # Global install
luarocks install --local wezterm-types # Local install
After installing the types, add the type annotations to wezterm and config respectively
when running require("wezterm") in your configuration.
A useful example:
local wezterm = require("wezterm") ---@type Wezterm
local config = wezterm.config_builder() ---@type Config
config.window_decorations = "RESIZE|MACOS_FORCE_DISABLE_SHADOW"
return config
These annotations enable the Lua Language Server to provide proper type checking and autocompletion for WezTerm configuration options.