Skip to content
Merged
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
61 changes: 38 additions & 23 deletions src/FsAutoComplete/LspServers/AdaptiveServerState.fs
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,43 @@ type AdaptiveState

let notifications = Event<NotificationEvent * CancellationToken>()

do
workspaceLoader.Notifications.Subscribe(fun n ->
let inline trigger n = notifications.Trigger(n, CancellationToken.None)

match n with
| Ionide.ProjInfo.Types.WorkspaceProjectState.Loading(p) -> ProjectResponse.ProjectLoading(p)
| Ionide.ProjInfo.Types.WorkspaceProjectState.Loaded(p, _knownProjs, cache) ->

let projViewerItemsNormalized = ProjectViewer.render p

let responseFiles =
projViewerItemsNormalized.Items
|> List.map (function
| ProjectViewerItem.Compile(p, c) -> ProjectViewerItem.Compile(Helpers.fullPathNormalized p, c))
|> List.choose (function
| ProjectViewerItem.Compile(p, _) -> Some p)

let references = FscArguments.references (p.OtherOptions)

let ws =
{ ProjectFileName = p.ProjectFileName
ProjectFiles = responseFiles
OutFileOpt = Option.ofObj p.TargetPath
References = references
Extra = p
ProjectItems = projViewerItemsNormalized.Items
Additionals = Map.empty }

ProjectResponse.Project(ws, cache)

| Ionide.ProjInfo.Types.WorkspaceProjectState.Failed(p, e) -> ProjectResponse.ProjectError(p, e)
|> NotificationEvent.Workspace
|> trigger

)
|> disposables.Add

let scriptFileProjectOptions = Event<CompilerProjectOption>()

let fileParsed =
Expand Down Expand Up @@ -1001,34 +1038,12 @@ type AdaptiveState
>> Log.addContextDestructured "path" ((|BaseIntermediateOutputPath|_|) p.Properties)
)

let projectFileName = p.ProjectFileName
let projViewerItemsNormalized = ProjectViewer.render p

let responseFiles =
projViewerItemsNormalized.Items
|> List.map (function
| ProjectViewerItem.Compile(p, c) -> ProjectViewerItem.Compile(Helpers.fullPathNormalized p, c))
|> List.choose (function
| ProjectViewerItem.Compile(p, _) -> Some p)

let references = FscArguments.references (p.OtherOptions)

logger.info (
Log.setMessage "ProjectLoaded {file}"
>> Log.addContextDestructured "file" projectFileName
>> Log.addContextDestructured "file" p.ProjectFileName
)

let ws =
{ ProjectFileName = projectFileName
ProjectFiles = responseFiles
OutFileOpt = Option.ofObj p.TargetPath
References = references
Extra = p
ProjectItems = projViewerItemsNormalized.Items
Additionals = Map.empty }

let not = ProjectResponse.Project(ws, false) |> NotificationEvent.Workspace
notifications.Trigger(not, CancellationToken.None)

let not = ProjectResponse.WorkspaceLoad true |> NotificationEvent.Workspace

Expand Down
Loading