From 4f89210b898fdaabba6da886d6d025299dae46a7 Mon Sep 17 00:00:00 2001 From: RoomWithOutRoof Date: Sat, 18 Apr 2026 23:46:10 +0800 Subject: [PATCH] Sort JSDoc parameter suggestions by argument position Fixes #20183 When triggering completions after @param in a JSDoc comment, parameter suggestions are now sorted by their position in the function signature, so 'z' from foo(z, a) appears before 'a'. Previously all parameters had the same sortText (LocationPriority), causing them to be sorted alphabetically instead of by position. Co-Authored-By: RoomWithOutRoof --- src/services/jsDoc.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/services/jsDoc.ts b/src/services/jsDoc.ts index 0f8cb859d6822..e38616d5dcfdb 100644 --- a/src/services/jsDoc.ts +++ b/src/services/jsDoc.ts @@ -420,7 +420,7 @@ export function getJSDocParameterNameCompletions(tag: JSDocParameterTag): Comple const fn = jsdoc.parent; if (!isFunctionLike(fn)) return []; - return mapDefined(fn.parameters, param => { + return mapDefined(fn.parameters, (param, index) => { if (!isIdentifier(param.name)) return undefined; const name = param.name.text; @@ -431,7 +431,9 @@ export function getJSDocParameterNameCompletions(tag: JSDocParameterTag): Comple return undefined; } - return { name, kind: ScriptElementKind.parameterElement, kindModifiers: "", sortText: Completions.SortText.LocationPriority }; + // Sort by parameter position so that e.g. `@param z` from `foo(z, a)` comes before `@param a` + const sortText = `${index.toString().padStart(2, "0")}` as string & { __sortText: any }; + return { name, kind: ScriptElementKind.parameterElement, kindModifiers: "", sortText }; }); }