- Notifications
You must be signed in to change notification settings - 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