Forge
csharp4405de34
1namespace CascadeIDE.Services.Lsp;
2
3/// <summary>Пресеты запуска C# language server (один активный процесс).</summary>
4public static class CSharpLspProviderIds
5{
6 public const string ParseOnly = "ParseOnly";
7 public const string OmniSharp = "OmniSharp";
8 public const string CSharpLs = "CSharpLs";
9 public const string Custom = "Custom";
10
11 public static readonly string[] All = [ParseOnly, OmniSharp, CSharpLs, Custom];
12
13 public static (string fileName, string arguments) ResolveProcessArgs(string providerId, string? solutionPath, string? userExecutable, string? userArguments)
14 {
15 var extra = string.IsNullOrWhiteSpace(userArguments) ? "" : userArguments.Trim();
16 return providerId switch
17 {
18 CSharpLs => (
19 string.IsNullOrWhiteSpace(userExecutable) ? "csharp-ls" : userExecutable.Trim(),
20 extra),
21 Custom => (
22 userExecutable?.Trim() ?? "dotnet",
23 extra),
24 OmniSharp => (
25 string.IsNullOrWhiteSpace(userExecutable) ? "OmniSharp" : userExecutable.Trim(),
26 CombineArgs("--languageserver", extra)),
27 _ => ("", "")
28 };
29 }
30
31 private static string CombineArgs(string preset, string extra) =>
32 string.IsNullOrEmpty(extra) ? preset : $"{preset} {extra}";
33}
34
View only · write via MCP/CIDE