Skip to content
Open
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
38 changes: 38 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,44 @@ This package implements a TypeScript language service plugin that allows additio
"typescript.enablePromptUseWorkspaceTsdk": true
}
```
- In Zed, `effect-language-service setup` can add or update `.zed/settings.json` so `vtsls` loads workspace TypeScript plugins:
```jsonc
{
"languages": {
"TSX": {
"language_servers": [
"vtsls",
"typescript-language-server",
"..."
]
},
"TypeScript": {
"language_servers": [
"vtsls",
"typescript-language-server",
"..."
]
}
},
"lsp": {
"vtsls": {
"settings": {
"typescript": {
"tsserver": {
"pluginPaths": [
"./node_modules"
]
}
},
"vtsls": {
"autoUseWorkspaceTsdk": true
}
}
}
}
}
```
`show_edit_predictions` is intentionally not configured.
- In JetBrains you may have to disable the Vue language service, and choose the workspace version of TypeScript in the settings from the dropdown.
- In NVim with nvim-vtsls you should refer to [how to enable TypeScript plugins in vtsls](https://github.com/yioneko/vtsls?tab=readme-ov-file#typescript-plugin-not-activated)
- In Emacs, additional steps are required to enable LSPs, [step by step instructions can be found here](https://gosha.net/2025/effect-ls-emacs/)
Expand Down
164 changes: 164 additions & 0 deletions packages/harness-effect-v3/__snapshots__/setup-cli.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,83 @@ exports[`Setup CLI > should add LSP with VS Code editor selected and configure V
}"
`;

exports[`Setup CLI > should add LSP with Zed editor selected and create Zed settings > .zed/settings.json 1`] = `
"{
"languages": {
"TSX": {
"language_servers": [
"vtsls",
"typescript-language-server",
"..."
]
},
"TypeScript": {
"language_servers": [
"vtsls",
"typescript-language-server",
"..."
]
}
},
"lsp": {
"vtsls": {
"settings": {
"typescript": {
"tsserver": {
"pluginPaths": [
"./node_modules"
]
}
},
"vtsls": {
"autoUseWorkspaceTsdk": true
}
}
}
}
}
"
`;

exports[`Setup CLI > should add LSP with Zed editor selected and create Zed settings > change summary 1`] = `
[
{
"description": "Add @effect/language-service@workspace:* to devDependencies",
"file": "package.json",
},
{
"description": "Add $schema to tsconfig; Add plugins array with @effect/language-service plugin",
"file": "tsconfig.json",
},
{
"description": "Create .zed/settings.json with vtsls settings",
"file": ".zed/settings.json",
},
]
`;

exports[`Setup CLI > should add LSP with Zed editor selected and create Zed settings > package.json 1`] = `
"{
"name": "test-project",
"version": "1.0.0",
"dependencies": {},
"devDependencies": { "@effect/language-service": "workspace:*" }
}"
`;

exports[`Setup CLI > should add LSP with Zed editor selected and create Zed settings > tsconfig.json 1`] = `
"{
"compilerOptions": {
"strict": true,
"target": "ES2022",
"plugins": [
{ "name": "@effect/language-service" }
]
},
"$schema": "https://raw.githubusercontent.com/Effect-TS/language-service/refs/heads/main/schema.json"
}"
`;

exports[`Setup CLI > should generate changes for adding LSP with custom diagnostic severities > change summary 1`] = `
[
{
Expand Down Expand Up @@ -612,6 +689,93 @@ exports[`Setup CLI > should preserve existing VSCode settings when adding LSP-sp
}"
`;

exports[`Setup CLI > should preserve existing Zed settings when adding missing vtsls config > .zed/settings.json 1`] = `
"{
"theme": "Ayu Dark",
"languages": {
"TSX": {
"formatter": "prettier",
"language_servers": [
"vtsls",
"typescript-language-server",
"...",
"custom-tsx-server"
]
},
"JavaScript": {
"formatter": "prettier"
},
"TypeScript": {
"language_servers": [
"vtsls",
"typescript-language-server",
"..."
]
}
},
"lsp": {
"vtsls": {
"initialization_options": {
"maxTsServerMemory": 4096
},
"settings": {
"vtsls": {
"experimental": true,
"autoUseWorkspaceTsdk": true
},
"typescript": {
"tsserver": {
"pluginPaths": [
"./node_modules"
]
}
}
}
}
}
}
"
`;

exports[`Setup CLI > should preserve existing Zed settings when adding missing vtsls config > change summary 1`] = `
[
{
"description": "Add @effect/language-service@workspace:* to devDependencies",
"file": "package.json",
},
{
"description": "Add $schema to tsconfig; Add plugins array with @effect/language-service plugin",
"file": "tsconfig.json",
},
{
"description": "Update .zed/settings.json with vtsls settings",
"file": ".zed/settings.json",
},
]
`;

exports[`Setup CLI > should preserve existing Zed settings when adding missing vtsls config > package.json 1`] = `
"{
"name": "test-project",
"version": "1.0.0",
"dependencies": {},
"devDependencies": { "@effect/language-service": "workspace:*" }
}"
`;

exports[`Setup CLI > should preserve existing Zed settings when adding missing vtsls config > tsconfig.json 1`] = `
"{
"compilerOptions": {
"strict": true,
"target": "ES2022",
"plugins": [
{ "name": "@effect/language-service" }
]
},
"$schema": "https://raw.githubusercontent.com/Effect-TS/language-service/refs/heads/main/schema.json"
}"
`;

exports[`Setup CLI > should remove Effect Language Service section from CLAUDE.md when uninstalling LSP > CLAUDE.md 1`] = `
"# CLAUDE.md

Expand Down
Loading