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 Helpdoc
ai-helper.wezterm Documentation Helpdoc
bar.wezterm Documentation Helpdoc
battery.wez Documentation Helpdoc
chord.wz Documentation Helpdoc
dev.wezterm Documentation Helpdoc
kanagawa.wz Documentation Helpdoc
lantern.wz Documentation Helpdoc
lib.wezterm Documentation Helpdoc
listeners.wezterm Documentation Helpdoc
log.wz Documentation Helpdoc
memo.wz Documentation Helpdoc
modal.wezterm Documentation Helpdoc
passrelay.wezterm Documentation Helpdoc
pinned-tabs.wezterm Documentation Helpdoc
pivot_panes.wezterm Documentation Helpdoc
presentation.wez Documentation Helpdoc
quick_domains.wezterm Documentation Helpdoc
quickselect.wezterm Documentation Helpdoc
resurrect.wezterm Documentation Helpdoc
ribbon.wz Documentation Helpdoc
rosepine Documentation Helpdoc
sessionizer.wezterm Documentation Helpdoc
sigil.wz Documentation Helpdoc
smart-splits.nvim Documentation Helpdoc
smart_workspace_switcher.wezterm Documentation Helpdoc
stack.wez Documentation Helpdoc
sync-panes.wez Documentation Helpdoc
tabline.wez Documentation Helpdoc
tabsets.wezterm Documentation Helpdoc
toggle_terminal.wez Documentation Helpdoc
warp.wz Documentation Helpdoc
wez-pain-control Documentation Helpdoc
wez-tmux Documentation Helpdoc
wezterm-agent-deck Documentation Helpdoc
wezterm-attention Documentation Helpdoc
wezterm-cmd-sender Documentation Helpdoc
wezterm-cmdpicker Documentation Helpdoc
wezterm-config.nvim Documentation Helpdoc
wezterm-quota-limit Documentation Helpdoc
wezterm-replay Documentation Helpdoc
wezterm-sessions Documentation Helpdoc
wezterm-status Documentation Helpdoc
wezterm-sync Documentation Helpdoc
wezterm-tabs Documentation Helpdoc
wezterm-theme-rotator Documentation Helpdoc
widgets.wez Documentation Helpdoc
workspace-picker.wezterm Documentation Helpdoc
workspacesionizer.wezterm Documentation Helpdoc
wsinit.wezterm Documentation 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>',
        },
      },
    },
  },
}