You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Today, there is no more integration with ionide F# plugin (through FsAutoComplete).
With the current implementation (FSAC directly referencing FSharpLint.Core), it means both FSharpLint & FSAC must share the same version of FSharp.Compiler.Service.
As discussed in ionide/FsAutoComplete#942, an alternative solution could be to implement a API layer between FSharpLint.Core & FSAC, so FSharp.Compiler.Service could be abstracted using dedicated types (same solution that Fantomas is using)
To summarize the integration with FSAC this new API :
sequenceDiagram
box green FsAutoComplete process
participant FsAutoComplete
participant FSharpLint.Client
end
box blue FSharpLint process
participant FSharpLint.Console
end
FsAutoComplete->>FSharpLint.Client: GetDaemon
FSharpLint.Client->>FSharpLint.Console: Start Daemon
FSharpLint.Console-->>FSharpLint.Client:
FSharpLint.Client->FSharpLint.Console: Setup jsonrpc
FSharpLint.Console-->>FSharpLint.Client:
FSharpLint.Client-->>FsAutoComplete:
Note over FsAutoComplete,FSharpLint.Client: Later, when a lint is needed
FsAutoComplete->>FSharpLint.Client: LintRequest
FSharpLint.Client->>FSharpLint.Console: LintRequest
FSharpLint.Console->>FSharpLint.Console: Lint with FSharp.Compiler.Service
FSharpLint.Console-->>FSharpLint.Client: LintResponse<br/>(no FSharp.Compiler.Service types here)
FSharpLint.Client-->>FsAutoComplete: LintResponse
Description
Today, there is no more integration with ionide F# plugin (through FsAutoComplete).
With the current implementation (FSAC directly referencing FSharpLint.Core), it means both FSharpLint & FSAC must share the same version of FSharp.Compiler.Service.
As discussed in ionide/FsAutoComplete#942, an alternative solution could be to implement a API layer between FSharpLint.Core & FSAC, so FSharp.Compiler.Service could be abstracted using dedicated types (same solution that Fantomas is using)
To summarize the integration with FSAC this new API :
sequenceDiagram box green FsAutoComplete process participant FsAutoComplete participant FSharpLint.Client end box blue FSharpLint process participant FSharpLint.Console end FsAutoComplete->>FSharpLint.Client: GetDaemon FSharpLint.Client->>FSharpLint.Console: Start Daemon FSharpLint.Console-->>FSharpLint.Client: FSharpLint.Client->FSharpLint.Console: Setup jsonrpc FSharpLint.Console-->>FSharpLint.Client: FSharpLint.Client-->>FsAutoComplete: Note over FsAutoComplete,FSharpLint.Client: Later, when a lint is needed FsAutoComplete->>FSharpLint.Client: LintRequest FSharpLint.Client->>FSharpLint.Console: LintRequest FSharpLint.Console->>FSharpLint.Console: Lint with FSharp.Compiler.Service FSharpLint.Console-->>FSharpLint.Client: LintResponse<br/>(no FSharp.Compiler.Service types here) FSharpLint.Client-->>FsAutoComplete: LintResponseTODO:
versionmethod for the Client/Console flow (Create an API layer for external process #637)lintmethod (that will call val lintFile : optionalParams:OptionalLintParameters -> filePath:string -> LintResult method) (Add LintFile method to API layer #663)I would like a confirmation that this feature is ok for you guys and I'm willing to work on it