設定

SharpLsp には 2 つの設定方法があります。
sharplsp.tomlに記述するワークスペース単位のサーバー設定- VS Code の
sharplsp.*以下にあるクライアントおよび UI 設定
これらを相互に置き換えることはできません。特に、FSI の引数とインレイヒントの表示設定は VS Code の設定であり、TOML フィールドではありません。
sharplsp.toml の場所
sharplsp.toml はソリューションまたはプロジェクトと同じ場所に置きます。SharpLsp はワークスペースルートから開始して上位ディレクトリへたどり、最初に見つかったファイルを使用します。単一ファイルモードでは、サーバーの現在のディレクトリから開始します。
スキーマは deny_unknown_fields を使用します。キーのスペルが誤っている場合やサポートされていない場合は、起動エラーになります。
完全な TOML スキーマ
[server]
log_level = "info"
debounce_ms = 150
[csharp]
enabled = true
solution_path = ""
[fsharp]
enabled = true
[diagnostics]
analyzers_enabled = true
solution_wide_analysis = true
project_filter = []
[analyzers]
dead_code = true
monorepo = false
[profiler]
max_concurrent_sessions = 5
default_trace_duration = 30
default_trace_format = "speedscope"
default_counter_providers = ["System.Runtime"]
default_counter_interval = 1
output_directory = ".sharplsp/profiles"
すべてのフィールドは任意です。省略したフィールドには、上記の値が使われます。
実行時の動作に影響する設定
| フィールド | 動作 |
|---|---|
csharp.enabled |
C# サイドカーを起動するかスキップします |
csharp.solution_path |
ワークスペースからの絶対パスまたは相対パスで .sln または .slnx を選択します |
fsharp.enabled |
F# サイドカーを起動するかスキップします |
diagnostics.solution_wide_analysis |
C# の起動時ソリューションスキャンを有効にします |
diagnostics.project_filter |
C# スキャンを一致するプロジェクト名に限定します |
analyzers.dead_code |
SharpLsp の C# および F# デッドコードアナライザーを有効にします |
analyzers.monorepo |
未使用の public シンボルをデッドコードとして扱い、エラーとして報告します |
profiler.max_concurrent_sessions |
同時に実行できるプロファイラーセッション数を制限します |
solution_path が空の場合、SharpLsp はワークスペース探索を使用します。複数のソリューションを含むワークスペースは曖昧であり、1 つを選択するまでは何も読み込まれない場合があります。設定したパスがファイルを指していない場合、サーバーは警告をログに記録し、ワークスペース探索へフォールバックします。
言語を無効にすると、そのサイドカーは起動しません。C# では構文のみを扱うホスト側の動作が残る場合がありますが、無効にした言語へのセマンティックリクエストから有用な結果は返りません。
受け付けられるが未適用の設定
次のフィールドは互換性のために解析および保持されますが、値を変更しても現在は該当する動作が変わりません。
server.log_levelserver.debounce_msdiagnostics.analyzers_enabled- すべての
profiler.*既定値(max_concurrent_sessionsを除く)
VS Code のログには sharplsp.logging.level を使用します。この値は RUST_LOG としてホストへ転送されます。現在、プロファイラーコマンドは各リクエストの既定値を使用し、.sharplsp/profiles 以下へ書き込みます。
VS Code の主な設定
| 設定 | 用途 |
|---|---|
sharplsp.logging.level |
ホストのログフィルター |
sharplsp.lspPath |
信頼されたワークスペースでのサーバーバイナリの上書き |
sharplsp.csharpSidecarPath / sharplsp.fsharpSidecarPath |
信頼されたワークスペースでのサイドカーの上書き |
sharplsp.server.extraArgs |
信頼されたワークスペースでの追加サーバー引数 |
sharplsp.fsi.extraArgs |
dotnet fsi の後に渡す引数 |
sharplsp.inlayHints.parameterNames |
パラメーター名ヒントの設定(現在は解析のみ) |
sharplsp.inlayHints.typeInference |
推論型ヒントの設定(現在は解析のみ) |
sharplsp.inlayHints.pipelineTypes |
F# のパイプライン型ヒントの設定(現在は解析のみ) |
sharplsp.nuget.includePrerelease |
検索にプレリリースパッケージを含めます |
sharplsp.hotReload.onSave |
保存時にホットリロードを実行します |
sharplsp.testLens.enabled |
テストの CodeLens アクションを表示します |
sharplsp.solutionExplorer.autoReveal |
ツリーをアクティブなエディターに追従させます |
メンバーの並べ替え順とデバッグアダプターのパスも、VS Code の Settings UI で設定できます。
3 つのインレイヒント設定は拡張機能に登録され、読み取り可能ですが、現在の本番経路では返されるヒントの絞り込みに使用されていません。そのため、設定を変更してもまだ効果はありません。
.editorconfig
Roslyn と FCS は、それぞれ通常のワークスペース入力を通じてプロジェクト/コンパイラー設定を読み取ります。SharpLsp は現在、.editorconfig に重要度が記載されているだけでは、任意のサードパーティ製アナライザーパッケージを実行しません。実装済みのソースについては、診断を参照してください。