DrKJeff16/wezterm-types

website github github
neovim-lua-development
stars 212
issues 1
subscribers 4
forks 29
CREATED

UPDATED


wezterm-types

This project aims to provide LuaCATS-like LuaLS 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.

Features

  • LuaCATS-like type annotations
  • Built-in colorschemes included (config.color_scheme)
  • Up-to-date descriptions
  • Community plugin annotations
  • Neovim support
    • Through lazydev.nvim
    • Through the built-in LSP API
  • VSCode/VSCodium support by cloning this into ~/.config/wezterm, then editing your config in that directory

Table of Contents


Installation

LuaRocks

You 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.

Neovim

We recommend using lazy.nvim as a package manager:

{
  'DrKJeff16/wezterm-types',
  version = false, -- Get the latest version
},

Featured Plugins

This project also features type annotations for various WezTerm plugins.

If you want to add your plugin, please read CONTRIBUTING.md.

Plugin Documentation Neovim Help
ai-commander.wezterm Documentation Neovim Helpdoc
ai-helper.wezterm Documentation Neovim Helpdoc
bar.wezterm Documentation Neovim Helpdoc
battery.wez Documentation Neovim Helpdoc
chord.wz Documentation Neovim Helpdoc
dev.wezterm Documentation Neovim Helpdoc
kanagawa.wz Documentation Neovim Helpdoc
lantern.wz Documentation Neovim Helpdoc
lib.wezterm Documentation Neovim Helpdoc
listeners.wezterm Documentation Neovim Helpdoc
log.wz Documentation Neovim Helpdoc
memo.wz Documentation Neovim Helpdoc
modal.wezterm Documentation Neovim Helpdoc
passrelay.wezterm Documentation Neovim Helpdoc
pinned-tabs.wezterm Documentation Neovim Helpdoc
pivot_panes.wezterm Documentation Neovim Helpdoc
presentation.wez Documentation Neovim Helpdoc
quick_domains.wezterm Documentation Neovim Helpdoc
quickselect.wezterm Documentation Neovim Helpdoc
resurrect.wezterm Documentation Neovim Helpdoc
ribbon.wz Documentation Neovim Helpdoc
rosepine Documentation Neovim Helpdoc
sessionizer.wezterm Documentation Neovim Helpdoc
sigil.wz Documentation Neovim Helpdoc
smart-splits.nvim Documentation Neovim Helpdoc
smart_workspace_switcher.wezterm Documentation Neovim Helpdoc
stack.wez Documentation Neovim Helpdoc
tabline.wez Documentation Neovim Helpdoc
tabsets.wezterm Documentation Neovim Helpdoc
toggle_terminal.wez Documentation Neovim Helpdoc
warp.wz Documentation Neovim Helpdoc
wez-pain-control Documentation Neovim Helpdoc
wez-tmux Documentation Neovim Helpdoc
wezterm-agent-deck Documentation Neovim Helpdoc
wezterm-attention Documentation Neovim Helpdoc
wezterm-cmd-sender Documentation Neovim Helpdoc
wezterm-cmdpicker Documentation Neovim Helpdoc
wezterm-config.nvim Documentation Neovim Helpdoc
wezterm-quota-limit Documentation Neovim Helpdoc
wezterm-replay Documentation Neovim Helpdoc
wezterm-sessions Documentation Neovim Helpdoc
wezterm-status Documentation Neovim Helpdoc
wezterm-sync Documentation Neovim Helpdoc
wezterm-tabs Documentation Neovim Helpdoc
wezterm-theme-rotator Documentation Neovim Helpdoc
workspace-picker.wezterm Documentation Neovim Helpdoc
workspacesionizer.wezterm Documentation Neovim Helpdoc
wsinit.wezterm Documentation Neovim Helpdoc

Usage

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.

Using lazydev.nvim

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' } },
    },
  },
}

Using The Built-in Neovim LSP

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>',
        },
      },
    },
  },
}