Skip to content

Commit 4f89210

Browse files
Jah-yeeRoomWithOutRoof
andcommitted
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 <RoomWithOutRoof@users.noreply.github.com>
1 parent f1a9288 commit 4f89210

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

src/services/jsDoc.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ export function getJSDocParameterNameCompletions(tag: JSDocParameterTag): Comple
420420
const fn = jsdoc.parent;
421421
if (!isFunctionLike(fn)) return [];
422422

423-
return mapDefined(fn.parameters, param => {
423+
return mapDefined(fn.parameters, (param, index) => {
424424
if (!isIdentifier(param.name)) return undefined;
425425

426426
const name = param.name.text;
@@ -431,7 +431,9 @@ export function getJSDocParameterNameCompletions(tag: JSDocParameterTag): Comple
431431
return undefined;
432432
}
433433

434-
return { name, kind: ScriptElementKind.parameterElement, kindModifiers: "", sortText: Completions.SortText.LocationPriority };
434+
// Sort by parameter position so that e.g. `@param z` from `foo(z, a)` comes before `@param a`
435+
const sortText = `${index.toString().padStart(2, "0")}` as string & { __sortText: any };
436+
return { name, kind: ScriptElementKind.parameterElement, kindModifiers: "", sortText };
435437
});
436438
}
437439

0 commit comments

Comments
 (0)