Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
bddd3b1
Offer F# declarations to the Copilot chat "#" mention picker
xperiandri Aug 31, 2026
53e1883
Parallelize Copilot symbol lookup and cut allocations on the hot cach…
xperiandri Aug 31, 2026
0f7f66e
Link the Copilot mention picker release note to its PR
xperiandri Aug 31, 2026
fdfbd1d
Harden Copilot provider registration and widen one-line snippets
xperiandri Sep 3, 2026
5eea689
Match declaration names over spans instead of building them
xperiandri Sep 3, 2026
116a5e4
Slice source text instead of copying it line by line for outlining
xperiandri Sep 3, 2026
4741185
Track comment lines by number instead of storing their text
xperiandri Sep 3, 2026
5e4d411
Take the main thread before registering the Copilot context provider
xperiandri Sep 8, 2026
8d73011
Trace Copilot context-provider registration through the output pane
xperiandri Sep 8, 2026
d1ed1c4
Answer the Copilot mention picker from what is already parsed
xperiandri Sep 8, 2026
30a96ad
Answer the mention picker with the open files first
xperiandri Sep 11, 2026
4bffe1a
Answer the picker before it knows what is being mentioned
xperiandri Sep 11, 2026
bd80eac
Rank and label F# declarations in the picker the way Copilot does C#
xperiandri Sep 11, 2026
be1c421
Take the copied outlining work back out of this pull request
xperiandri Sep 11, 2026
cd491d3
Keep double backticks in a mention's fully qualified name
xperiandri Sep 11, 2026
d9c3fdd
Throttle through FSharp.Core's Task.parallelDoLimit
xperiandri Sep 16, 2026
c3f3bb0
Format the Copilot context provider
xperiandri Sep 16, 2026
d38264d
Pipe items into Seq.map instead of applying it prefix-style
xperiandri Sep 16, 2026
43b84a1
Walk the solution once for both the picker and a picked mention
xperiandri Sep 16, 2026
3cac379
Collect subscriptions into an array, not a list
xperiandri Sep 16, 2026
2d3603c
Take Copilot picker focus from Copilot's own document-context service
xperiandri Sep 16, 2026
f17ea64
Navigate to the overload a Copilot mention was picked for, not the fi…
xperiandri Sep 16, 2026
42b5041
Preallocate the open-documents bucket in tiers by its known upper bound
xperiandri Sep 17, 2026
15f9ecc
Compare spans through ordinal helpers instead of spelling StringCompa…
xperiandri Sep 20, 2026
b0caf62
Take the span ordinal helpers from illib instead of copying them
xperiandri Sep 20, 2026
a6c811d
Resolve only the open documents up front, walk the rest on demand
xperiandri Sep 20, 2026
4bae417
Revert "Take the span ordinal helpers from illib instead of copying t…
xperiandri Sep 20, 2026
a4bda08
Look a declaration up in the tests without FSharp.Editor's inline helper
xperiandri Sep 21, 2026
a657945
Revert "Compare spans through ordinal helpers instead of spelling Str…
xperiandri Sep 21, 2026
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
1 change: 1 addition & 0 deletions docs/release-notes/.VisualStudio/18.vNext.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

* Code-fixes for FS3888 (compiler-semantic attribute on the `.fs` but not the `.fsi`): copy the attribute into the `.fsi`, or remove it from the `.fs`. ([Issue #19560](https://github.com/dotnet/fsharp/issues/19560), [PR #19880](https://github.com/dotnet/fsharp/pull/19880))
* Expand `<inheritdoc/>` in IDE tooltips, completion, and signature help, inheriting XML documentation from base classes, interfaces, overridden members, and constructors. ([Issue #19175](https://github.com/dotnet/fsharp/issues/19175), [PR #19188](https://github.com/dotnet/fsharp/pull/19188))
* F# types, modules, members and values now appear in the GitHub Copilot Chat `#` mention picker, and attach their declaration source as context. ([PR #20409](https://github.com/dotnet/fsharp/pull/20409))

### Fixed

Expand Down
3 changes: 3 additions & 0 deletions eng/Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@
ComponentModelHost would otherwise stay at 17.x; that 17.x/18.x split makes S/IComponentModel ambiguous
(CS0433). Pin to the SDK 18.9.496 version so those types resolve to a single assembly. -->
<PackageVersion Include="Microsoft.VisualStudio.ComponentModelHost" Version="18.9.453" />
<!-- Copilot chat contracts. Kept on the 18.9.x wave so its MessagePack and editor dependencies match the pins
above. Compile-only: at runtime the VS-installed contract assembly wins through Copilot's binding redirect. -->
<PackageVersion Include="Microsoft.VisualStudio.Copilot" Version="18.9.918" />
<PackageVersion Include="Microsoft.VisualStudio.Designer.Interfaces" Version="18.9.438" />
<PackageVersion Include="Microsoft.VisualStudio.Editor" Version="$(VisualStudioEditorPackagesVersion)" />
<PackageVersion Include="Microsoft.VisualStudio.Extensibility.Build" Version="17.13.39620" />
Expand Down
7 changes: 7 additions & 0 deletions vsintegration/src/FSharp.Editor/Common/CancellableTasks.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1130,6 +1130,13 @@ module CancellableTasks =
return! allTask
}

/// Runs the work over the items with at most maxDegreeOfParallelism of them in flight.
let forEachThrottled maxDegreeOfParallelism (work: 'T -> CancellableTask<unit>) (items: 'T seq) =
Comment thread
T-Gro marked this conversation as resolved.
cancellableTask {
let! ct = getCancellationToken ()
return! Task.parallelDoLimit maxDegreeOfParallelism ct (items |> Seq.map work)
}

let inline whenAllTasks (tasks: CancellableTask seq) =
cancellableTask {
let! ct = getCancellationToken ()
Expand Down
5 changes: 5 additions & 0 deletions vsintegration/src/FSharp.Editor/Common/Constants.fs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ module internal FSharpConstants =
/// "F# Language Service"
let FSharpLanguageServiceCallbackName = "F# Language Service"

[<Literal>]
/// Brokered service offering F# declarations to the Copilot chat "#" mention picker.
let copilotSymbolProviderName =
"Microsoft.VisualStudio.FSharp.CopilotSymbolContextProvider"

[<Literal>]
/// "FSharp"
let FSharpLanguageLongName = "FSharp"
Expand Down
Loading
Loading