-
Couldn't load subscription status.
- Fork 75
Open
Description
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: LintResponse
TODO:
- Create the lib layer (Add FSharpLint.Client project) (Create an API layer for external process #637)
- Expose a
versionmethod for the Client/Console flow (Create an API layer for external process #637) - Setup the build process to release FSharpLint.Client as a new nuget (Create an API layer for external process #637)
- Expose a
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
smoothdeveloper and TheAngryByrd
Metadata
Metadata
Assignees
Labels
No labels