This project aims to provide LuaCATS-like Lua Language Server type annotations for your WezTerm config.
Example videos can be found in
EXAMPLES.md.
NOTE: For any missing or unclear types you should always double-check the WezTerm Lua Reference. If using an annotated plugin featured in this repository please refer to its author for any unclear types.
config.color_scheme)wezterm.on())folke/lazydev.nvim~/.config/wezterm,
then editing your config in that directoryYou can install wezterm-types using LuaRocks:
luarocks install wezterm-types # Global install
luarocks install --local wezterm-types # Local install
To get it running in Neovim please refer to this discussion.
We recommend using folke/lazy.nvim as a package manager:
{
'DrKJeff16/wezterm-types',
version = false, -- Get the latest version
},
This project also features type annotations for various WezTerm plugins.
If you want to have your plugin featured please request it through an issue.
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.
Install lazydev.nvim as suggested:
{
'folke/lazydev.nvim',
ft = 'lua',
dependencies = { 'DrKJeff16/wezterm-types' },
opts = {
library = {
-- Other library configs...
{ path = 'wezterm-types', mods = { 'wezterm' } },
},
},
}
If you download this repo under a diferent name, you can use the following instead:
{
'folke/lazydev.nvim',
ft = 'lua',
dependencies = {
{
'DrKJeff16/wezterm-types',
name = '<my_custom_name>', -- CUSTOM DIRECTORY NAME
},
},
opts = {
library = {
-- MAKE SURE TO MATCH THE PLUGIN DIRECTORY'S NAME
{ path = '<my_custom_name>', mods = { 'wezterm' } },
},
},
}
Add the install path of wezterm-types in your lua_ls config.
return {
cmd = { 'lua-language-server' },
filetypes = { 'lua' },
settings = {
Lua = {
workspace = {
library = {
-- Other library paths...
'</path/to/wezterm-types>',
},
},
},
},
}