From 3579a1de749bb234155a8cc1e5485f063c8c0392 Mon Sep 17 00:00:00 2001 From: Steven McClankerton Date: Wed, 16 Sep 2026 13:31:29 +0000 Subject: [PATCH 1/3] feat: enable Prisma Next completion parameter hints Signed-off-by: Steven McClankerton --- docs/language-server.md | 2 ++ .../prismaNextClientOptions.test.ts | 17 +++++++++++++++++ .../prisma-language-server/prismaNextClients.ts | 3 +++ 3 files changed, 22 insertions(+) create mode 100644 packages/vscode/src/__test__/language-server/prismaNextClientOptions.test.ts diff --git a/docs/language-server.md b/docs/language-server.md index 5544b91b93..3d50fcd199 100644 --- a/docs/language-server.md +++ b/docs/language-server.md @@ -54,4 +54,6 @@ For marked files, the extension uses only the Prisma CLI installed at: The CLI must be a Prisma version that supports the `lsp` command and directive-based document filtering. The workspace must be trusted. The extension does not invoke a package manager, search parent directories, or fall back to a global installation. If the CLI is unavailable, the marked file has no language-server features until a suitable Prisma Next server can be started. +The Prisma Next client advertises `initializationOptions.completion.supportsTriggerParameterHintsCommand` so compatible servers can attach VS Code's built-in `editor.action.triggerParameterHints` command to completions. This enables parameter hints after accepting those completions; it requires server support and does not change the legacy client. + The extension starts at most one Prisma Next language server per workspace root, in addition to the single legacy server shared by the whole window. Adding or removing the directive in an open file switches which server handles it without requiring a save or restart. Prisma Next servers do not restart automatically after a failure; use **Prisma: Restart Language Server** to retry. Pinning the workspace to Prisma 6 routes every Prisma document to the legacy Prisma 6 server. diff --git a/packages/vscode/src/__test__/language-server/prismaNextClientOptions.test.ts b/packages/vscode/src/__test__/language-server/prismaNextClientOptions.test.ts new file mode 100644 index 0000000000..c8eac02901 --- /dev/null +++ b/packages/vscode/src/__test__/language-server/prismaNextClientOptions.test.ts @@ -0,0 +1,17 @@ +import assert from 'node:assert' +import { Uri } from 'vscode' +import { createPrismaNextClientOptions } from '../../plugins/prisma-language-server/prismaNextClients' + +suite('Prisma Next client options', () => { + test('opts into completion-triggered parameter hints', () => { + const options = createPrismaNextClientOptions({ + uri: Uri.file('/workspace'), + name: 'workspace', + index: 0, + }) + + assert.deepStrictEqual(options.initializationOptions, { + completion: { supportsTriggerParameterHintsCommand: true }, + }) + }) +}) diff --git a/packages/vscode/src/plugins/prisma-language-server/prismaNextClients.ts b/packages/vscode/src/plugins/prisma-language-server/prismaNextClients.ts index d3babd5a9a..0e02cd8270 100644 --- a/packages/vscode/src/plugins/prisma-language-server/prismaNextClients.ts +++ b/packages/vscode/src/plugins/prisma-language-server/prismaNextClients.ts @@ -209,6 +209,9 @@ export function createPrismaNextClientOptions(workspaceFolder: WorkspaceFolder): return { documentSelector: [{ language: 'prisma', scheme: 'file', pattern: `${escapedRoot}/**/*` }], workspaceFolder, + initializationOptions: { + completion: { supportsTriggerParameterHintsCommand: true }, + }, initializationFailedHandler: () => false, errorHandler: { error: () => ErrorAction.Shutdown, From 5d4340c8a457841e750dd60171a09a79d5e7edef Mon Sep 17 00:00:00 2001 From: Steven McClankerton Date: Wed, 16 Sep 2026 13:34:48 +0000 Subject: [PATCH 2/3] docs: remove redundant client capability description Signed-off-by: Steven McClankerton --- docs/language-server.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/language-server.md b/docs/language-server.md index 3d50fcd199..5544b91b93 100644 --- a/docs/language-server.md +++ b/docs/language-server.md @@ -54,6 +54,4 @@ For marked files, the extension uses only the Prisma CLI installed at: The CLI must be a Prisma version that supports the `lsp` command and directive-based document filtering. The workspace must be trusted. The extension does not invoke a package manager, search parent directories, or fall back to a global installation. If the CLI is unavailable, the marked file has no language-server features until a suitable Prisma Next server can be started. -The Prisma Next client advertises `initializationOptions.completion.supportsTriggerParameterHintsCommand` so compatible servers can attach VS Code's built-in `editor.action.triggerParameterHints` command to completions. This enables parameter hints after accepting those completions; it requires server support and does not change the legacy client. - The extension starts at most one Prisma Next language server per workspace root, in addition to the single legacy server shared by the whole window. Adding or removing the directive in an open file switches which server handles it without requiring a save or restart. Prisma Next servers do not restart automatically after a failure; use **Prisma: Restart Language Server** to retry. Pinning the workspace to Prisma 6 routes every Prisma document to the legacy Prisma 6 server. From 74c4cc4d97c4fc7ff7e8406c18a3e410d68097dc Mon Sep 17 00:00:00 2001 From: Steven McClankerton Date: Wed, 16 Sep 2026 13:35:48 +0000 Subject: [PATCH 3/3] test: remove redundant client options assertion Signed-off-by: Steven McClankerton --- .../prismaNextClientOptions.test.ts | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 packages/vscode/src/__test__/language-server/prismaNextClientOptions.test.ts diff --git a/packages/vscode/src/__test__/language-server/prismaNextClientOptions.test.ts b/packages/vscode/src/__test__/language-server/prismaNextClientOptions.test.ts deleted file mode 100644 index c8eac02901..0000000000 --- a/packages/vscode/src/__test__/language-server/prismaNextClientOptions.test.ts +++ /dev/null @@ -1,17 +0,0 @@ -import assert from 'node:assert' -import { Uri } from 'vscode' -import { createPrismaNextClientOptions } from '../../plugins/prisma-language-server/prismaNextClients' - -suite('Prisma Next client options', () => { - test('opts into completion-triggered parameter hints', () => { - const options = createPrismaNextClientOptions({ - uri: Uri.file('/workspace'), - name: 'workspace', - index: 0, - }) - - assert.deepStrictEqual(options.initializationOptions, { - completion: { supportsTriggerParameterHintsCommand: true }, - }) - }) -})