Open nevadascout opened 11 hours ago
That seems to be the issue, can you look into the package json found at /Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/
And check what was installed, I wonder if I overlooked something
package.json contents:
{
"dependencies": {
"@angular/language-server": "18.2.0",
"typescript": "5.5.4"
}
}
package-lock.json contents:
{
"name": "angular",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"@angular/language-server": "18.2.0",
"typescript": "5.5.4"
}
},
"node_modules/@angular/language-server": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/@angular/language-server/-/language-server-18.2.0.tgz",
"integrity": "sha512-8ifx0LuMkxMZkVPNiMxdGxuCw65FlDhW04ETN8BL6NV+46tfVk1yEC8Rc6Jm+bNfDxEoD/V8jxzLZVriuUvOWw==",
"license": "MIT",
"dependencies": {
"@angular/language-service": "18.2.0-rc.0",
"vscode-html-languageservice": "^4.2.5",
"vscode-jsonrpc": "6.0.0",
"vscode-languageserver": "7.0.0",
"vscode-languageserver-textdocument": "^1.0.7",
"vscode-uri": "3.0.7"
},
"bin": {
"ngserver": "bin/ngserver"
},
"engines": {
"node": "^18.19.1 || ^20.11.1"
}
},
"node_modules/@angular/language-service": {
"version": "18.2.0-rc.0",
"resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-18.2.0-rc.0.tgz",
"integrity": "sha512-mcWU4PPMRDwuPrGO6p1lOOH+KbHoAdPxtjoBA0wuR4PlELis6scWKoDHwuFOrga0ZL6/hZHc0qEG3iycLzD5Ng==",
"license": "MIT",
"engines": {
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
}
},
"node_modules/typescript": {
"version": "5.5.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
"integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=14.17"
}
},
"node_modules/vscode-html-languageservice": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-4.2.5.tgz",
"integrity": "sha512-dbr10KHabB9EaK8lI0XZW7SqOsTfrNyT3Nuj0GoPi4LjGKUmMiLtsqzfedIzRTzqY+w0FiLdh0/kQrnQ0tLxrw==",
"license": "MIT",
"dependencies": {
"vscode-languageserver-textdocument": "^1.0.4",
"vscode-languageserver-types": "^3.16.0",
"vscode-nls": "^5.0.0",
"vscode-uri": "^3.0.3"
}
},
"node_modules/vscode-jsonrpc": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz",
"integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==",
"license": "MIT",
"engines": {
"node": ">=8.0.0 || >=10.0.0"
}
},
"node_modules/vscode-languageserver": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz",
"integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==",
"license": "MIT",
"dependencies": {
"vscode-languageserver-protocol": "3.16.0"
},
"bin": {
"installServerIntoExtension": "bin/installServerIntoExtension"
}
},
"node_modules/vscode-languageserver-protocol": {
"version": "3.16.0",
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz",
"integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==",
"license": "MIT",
"dependencies": {
"vscode-jsonrpc": "6.0.0",
"vscode-languageserver-types": "3.16.0"
}
},
"node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": {
"version": "3.16.0",
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
"integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==",
"license": "MIT"
},
"node_modules/vscode-languageserver-textdocument": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
"integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==",
"license": "MIT"
},
"node_modules/vscode-languageserver-types": {
"version": "3.17.5",
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
"integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
"license": "MIT"
},
"node_modules/vscode-nls": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz",
"integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==",
"license": "MIT"
},
"node_modules/vscode-uri": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz",
"integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==",
"license": "MIT"
}
}
}
Node modules subfolders:
That's interesting, Theoretically it should be working, however, I did find some more bad logic, so I'll be updating the repo soonTM
Looking at that package lock, makes me wonder if we should actually be using @angular/language-service instead? It seems @angular/language-server is very specific to vs code. When I have more time I'll chase out that rabit hole
Yes I suppose that @angular/language-server
was built for VS Code because Microsoft created the LSP for VS Code, and probably the Angular team did not give much thought to supporting other editors because at the time there were no others that supported the LSP.
Now, of course, the LSP is much more widely implemented.
I created the original PHP plugin for VS Code and implemented a language server with no real knowledge of what I was doing 😅 Later Sourcegraph wanted to use it but they weren't able to because I wasn't following the LSP spec.
Here's a branch, let me know if it works https://github.com/nathansbradshaw/zed-angular/pull/15 (Although i'd be surprised if it does since your package.json is using the correct. Versions. What version of angular are you using in your project?
That's awesome, I definitely understand the not knowing what I'm doing part. I need to find some time to actually go through and read through the documentation both on zed and angular (documentation meaning code here, since formal docs don't seem to exist for either), I've also seen that neovim has an angular lsp, but that is built similar to the vscode one. I don't know how well neovim plugins translate to zed extensions.
I seem to have the same error:
Language server error: angular
oneshot canceled
-- stderr--
/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:241
throw new Error(`Failed to resolve '${packageName}' with minimum version '${minVersion}' from ` + JSON.stringify(probeLocations, null, 2));
^
Error: Failed to resolve 'typescript/lib/tsserverlibrary' with minimum version '5.0' from [
"node_modules/typescript/lib"
]
at resolveWithMinVersion (/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:241:13)
at resolveTsServer (/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:255:14)
at requireOverride (/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:311:57)
at Object.<anonymous> (/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:215067:25)
at Module._compile (node:internal/modules/cjs/loader:1358:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)
at Module.load (node:internal/modules/cjs/loader:1208:32)
at Module._load (node:internal/modules/cjs/loader:1024:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at node:internal/main/run_main_module:28:49
Node.js v20.16.0
I'm using Angular 18.1.2
- but as mentioned before the package.json that defines the angular version is not in the root of the project - its in a subfolder, with a different package.json in the root folder. Not sure if that makes a difference or not.
In theory the LSP is portable so if the neovim angular LSP is different to the official angular team have created (the vscode one you're using here) then you should be able to swap out the LSP backend of this extension for the other one 🤔 I'm not very experienced with Rust, otherwise I'd offer to help more 😅
I did add the ability to manually set the angular lsp version in your zed settings. However I am now running into issue on this branch as well.
The NeoVim one uses the same language server that we are using here https://github.com/iamcco/coc-angular/blob/master/package.json
The same for the Eclipse version https://github.com/eclipse-wildwebdeveloper/wildwebdeveloper/blob/master/org.eclipse.wildwebdeveloper/package.json
The Eclipse config seems to be closer to how zed is set up, so I think I'll look more into this after work today https://github.com/eclipse-wildwebdeveloper/wildwebdeveloper/blob/master/org.eclipse.wildwebdeveloper/src/org/eclipse/wildwebdeveloper/angular/AngularLanguageServer.java
~Yeah, I goofed something bad on the branch, I'll have to go back through it and find out what I did. For some reason, it didn't throw any errors for me, but the LSP just didn't work.~
Edit: It does work, I just forgot to reload my workspace after rebuilding.
After pulling the newest version (67657eae0eeb59e16f06fe0ee82e69c1d301bc02) the extension won't run anymore.
I ran
git pull
to update the repo locally, then in Zed I clicked "Rebuild" for the angular extension in the extensions list. It failed with this error:Presumably this is caused by incompatible versions of typescript?