Skip to content

cl.exe Plugin Dependency On Windows #2096

Description

@mattcargile

Before Reporting an Issue

  • I have read the kickstart.nvim README.md.

  • I have read the appropriate plugin's documentation.

  • I have searched that this issue has not been reported before.

  • I have ran :checkhealth and so no obvious issue.

  • By checking this, I confirm that the above steps are completed. I understand leaving this unchecked will result in this report being closed immediately.

Describe the bug

cl.exe is required for one of plugins. I could see adding the dependencies below to the README.md.

Error

[nvim-treesitter/install/query] error: Error during "tree-sitter build": ^[[31mError:^[[0m Failed to compile parser

Caused by:
    Failed to execute the C compiler with the following command:
    "cl.exe" "-nologo" "-MD" "-O2" "-Brepro" "-std:c11" "-I" "C:\\Users\\matt\\AppData\\Local\\Temp\\nvim\\tree-sitter-query\\src" "-W4" "-LD" "
-utf-8" "/Fo\\\\?\\C:\\Users\\matt\\AppData\\Local\\Temp\\nvim\\tree-sitter-query\\tmp_5076_ThreadId(1)\\" "C:\\Users\\matt\\AppData\\Local\\Tem
p\\nvim\\tree-sitter-query\\src\\parser.c" "-link" "-out:\\\\?\\C:\\Users\\matt\\AppData\\Local\\Temp\\nvim\\tree-sitter-query\\parser.so" "/IMP
LIB:\\\\?\\C:\\Users\\matt\\AppData\\Local\\Temp\\nvim\\tree-sitter-query\\tmp_5076_ThreadId(1)\\temp.lib"
    Error: program not found

To Reproduce

  1. Be on windows
  2. git clone
  3. Open nvim
  4. Run through the vim.pack install
  5. Notice errors with cl.exe missing.

Workaround Using pwsh.exe

  1. choco install visualstudio2026buildtools -y
  2. choco install visualstudio2026-workload-vctools -y
  3. & 'C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\Common7\Tools\Launch-VsDevShell.ps1'

Some notes on the above. Need to be running with admin to perform the install. I am on 7.6.2 of PowerShell. Item 3 is needed to fix-up the $env:Path so processes can find cl.exe. On my system, when I run Get-Command cl after running the launcher ps1, I get C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\VC\Tools\MSVC\14.51.36231\bin\HostX86\x86\cl.exe. Presumably, one could update the $env:Path manually too, though there are four different copies of cl.exe.

There is probably a better world where one could use scoop install vswhere or choco install vswhere to ensure VS 2017 and later can be accounted for and we don't rely on the default location of the binary in the Visual Studio Installer location.

Below is how one can find the instance id to call into the cmdlet directly that is called by the ps1 above. It does get messy if folks don't have the exact install path as the above.

& 'C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe' -products Microsoft.VisualStudio.Product.BuildTools -latest -format json

And then with the whole archival of nvim-treesitter. Is it all worth it? Is there going to be a push to go "native" and "core" features with neovim? So one would rip out the nvim-treesitter dependency?

Desktop

  • OS: Windows
  • Terminal: Wezterm

Neovim Version

NVIM v0.12.3
Build type: Release
LuaJIT 2.1.1774638290

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions