Skip to content

Commit d7a9c29

Browse files
committed
initial code
1 parent e03d494 commit d7a9c29

File tree

2 files changed

+45
-5
lines changed

2 files changed

+45
-5
lines changed
Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,56 @@
11
namespace CSharpLanguageServer
22

3+
open System.IO
34
open Microsoft.Extensions.Logging
5+
open Ionide.LanguageServerProtocol
6+
open Ionide.LanguageServerProtocol.Server
7+
open Ionide.LanguageServerProtocol.Types
8+
open Ionide.LanguageServerProtocol.JsonRpc
49

510
open CSharpLanguageServer.Types
611
open CSharpLanguageServer.Logging
12+
open CSharpLanguageServer.RoslynHelpers
713

814
module Diagnostics =
915
let private logger = Logging.getLoggerByName "Diagnostics"
1016

11-
let diagnoseSolution (settings: ServerSettings): int =
12-
logger.LogDebug("diagnoseSolution: loading solution, settings={settings}", settings.SolutionPath)
17+
type LspClientStub() =
18+
interface System.IDisposable with
19+
member _.Dispose() = ()
1320

14-
logger.LogError("diagnoseSolution: loading solution {sln}", settings.SolutionPath)
21+
interface ILspClient with
22+
member _.WindowShowMessage(p: ShowMessageParams) = async { logger.LogDebug("WindowShowMessage: {message}", p.Message); return () }
23+
member _.WindowLogMessage(p: LogMessageParams) = async { logger.LogDebug("WindowLogMessage: {message}", p.Message); return () }
24+
member _.TelemetryEvent(_: LSPAny) = async { return () }
25+
member _.TextDocumentPublishDiagnostics(_: PublishDiagnosticsParams) = async { return () }
26+
member _.LogTrace(_: LogTraceParams) = async { return () }
27+
member _.CancelRequest(_: CancelParams) = async { return () }
28+
member _.Progress(_: ProgressParams) = async { return () }
29+
member _.WorkspaceWorkspaceFolders() = async { return LspResult.Ok None }
30+
member _.WorkspaceConfiguration(_: ConfigurationParams) = async { return LspResult.Ok [||] }
31+
member _.WindowWorkDoneProgressCreate(_: WorkDoneProgressCreateParams) = async { return LspResult.Ok () }
32+
member _.WorkspaceSemanticTokensRefresh() = async { return LspResult.Ok () }
33+
member _.WindowShowDocument(_: ShowDocumentParams) = async { return LspResult.Ok { Success = false } }
34+
member _.WorkspaceInlineValueRefresh() = async { return LspResult.Ok () }
35+
member _.WorkspaceInlayHintRefresh() = async { return LspResult.Ok () }
36+
member _.WorkspaceDiagnosticRefresh() = async { return LspResult.Ok () }
37+
member _.ClientRegisterCapability(_: RegistrationParams) = async { return LspResult.Ok () }
38+
member _.ClientUnregisterCapability(_: UnregistrationParams) = async { return LspResult.Ok () }
39+
member _.WindowShowMessageRequest(_: ShowMessageRequestParams) = async { return LspResult.Ok None }
40+
member _.WorkspaceCodeLensRefresh() = async { return LspResult.Ok () }
41+
member _.WorkspaceApplyEdit(_: ApplyWorkspaceEditParams) = async { return LspResult.Ok { Applied = false; FailureReason = None; FailedChange = None } }
42+
43+
let diagnoseSolution (settings: ServerSettings): Async<int> = async {
44+
logger.LogDebug("diagnoseSolution: settings={settings}", settings)
45+
46+
logger.LogDebug("diagnoseSolution: loading solution..")
47+
48+
let lspClient = LspClientStub()
49+
//let cwd = (string (Directory.GetCurrentDirectory())
50+
let cwd = "/Users/bob/src/test-csharp-net8"
51+
let! sln = loadSolutionOnSolutionPathOrDir lspClient logger None cwd
1552

1653
let exitCode = 0
17-
exitCode
54+
55+
return exitCode
56+
}

src/CSharpLanguageServer/Program.fs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ let entry args =
5959
match serverArgs.TryGetResult <@ Diagnose @> with
6060
| Some _ ->
6161
Logging.setupLogging LogLevel.Trace
62-
diagnoseSolution settings
62+
let exitCode = diagnoseSolution settings |> Async.RunSynchronously
63+
exitCode
6364

6465
| _ ->
6566
Logging.setupLogging settings.LogLevel

0 commit comments

Comments
 (0)