Skip to content
This repository was archived by the owner on Sep 5, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/luarc.ci.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"runtime.version": "LuaJIT",
"diagnostics.globals": [
"vim"
],
"workspace.checkThirdParty": false,
"diagnostics.disable": [
"undefined-field"
]
}
60 changes: 60 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,63 @@ jobs:

- name: Headless load check
run: bin/check

typecheck:
# Not yet in branch protection: informative while it is stabilized, then
# promoted to a required check once clean.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install Neovim
uses: rhysd/action-setup-vim@v1
with:
neovim: true
version: stable

- name: Install Deno
# denops.vim / skkeleton may touch Deno during the restore startup.
uses: denoland/setup-deno@v2
with:
deno-version: v2.x

- name: Cache plugins
# Shares the key with the `check` job so plugins are installed once.
uses: actions/cache@v4
with:
path: ~/.local/share/nvim-dev
key: nvim-dev-plugins-${{ hashFiles('lazy-lock.json') }}
restore-keys: nvim-dev-plugins-

- name: Restore plugins (no startup check)
# Populate the nvim-dev data dir so plugin type definitions are on disk;
# bin/check's full startup check is redundant here.
run: |
ln -sfn "$GITHUB_WORKSPACE" "$HOME/.config/nvim-dev" 2>/dev/null || {
mkdir -p "$HOME/.config" && ln -sfn "$GITHUB_WORKSPACE" "$HOME/.config/nvim-dev"
}
NVIM_APPNAME=nvim-dev nvim --headless "+Lazy! restore" +qa

- name: Install lua-language-server
run: |
ver=3.18.2
url="https://github.com/LuaLS/lua-language-server/releases/download/${ver}/lua-language-server-${ver}-linux-x64.tar.gz"
mkdir -p "$HOME/luals"
curl -fsSL "$url" | tar -xz -C "$HOME/luals"
echo "$HOME/luals/bin" >> "$GITHUB_PATH"

- name: Build CI luarc (inject library paths)
# LuaLS luarc cannot expand env vars, so resolve $VIMRUNTIME and the
# installed plugin lua dirs here and write the effective .luarc.json.
# This mirrors what lazydev supplies in-editor.
run: |
vimruntime="$(nvim --headless --clean -c 'lua io.write(vim.env.VIMRUNTIME)' -c 'qa' 2>/dev/null)"
libs="$(printf '%s\n' "$vimruntime" "$HOME"/.local/share/nvim-dev/lazy/*/lua | jq -R . | jq -s .)"
jq --argjson libs "$libs" '. + {"workspace.library": $libs}' .github/luarc.ci.json > .luarc.json
echo "Effective .luarc.json:"; cat .luarc.json

- name: lua-language-server --check
# --check prints diagnostics and exits non-zero when problems are
# found, so the exit code is the signal (this version writes no
# check.json).
run: lua-language-server --check . --checklevel Warning --logpath /tmp/luals-log
Loading