🔧 chore(lsp_server): gate providers to completion/definition
Initialize now advertises only completion (resolve) and definition. Verified: test_provider (clang-linux-server/Release)
This commit is contained in:
@@ -79,49 +79,9 @@ namespace lsp::provider
|
||||
result.capabilities.textDocumentSync = BuildTextDocumentSyncOptions();
|
||||
result.capabilities.completionProvider = BuildCompletionOptions();
|
||||
result.capabilities.definitionProvider = true;
|
||||
result.capabilities.typeDefinitionProvider = true;
|
||||
result.capabilities.implementationProvider = true;
|
||||
result.capabilities.hoverProvider = true;
|
||||
result.capabilities.signatureHelpProvider = BuildSignatureHelpOptions();
|
||||
result.capabilities.codeActionProvider = BuildCodeActionOptions();
|
||||
result.capabilities.codeLensProvider = protocol::CodeLensOptions{ .resolveProvider = true };
|
||||
result.capabilities.documentLinkProvider = protocol::DocumentLinkOptions{ .resolveProvider = true };
|
||||
result.capabilities.colorProvider = true;
|
||||
result.capabilities.referencesProvider = true;
|
||||
result.capabilities.documentHighlightProvider = true;
|
||||
result.capabilities.renameProvider = protocol::RenameOptions{ .prepareProvider = true };
|
||||
result.capabilities.documentSymbolProvider = true;
|
||||
result.capabilities.workspaceSymbolProvider = protocol::WorkspaceSymbolOptions{ .resolveProvider = true };
|
||||
result.capabilities.semanticTokensProvider = BuildSemanticTokenOptions();
|
||||
result.capabilities.callHierarchyProvider = true;
|
||||
result.capabilities.typeHierarchyProvider = true;
|
||||
result.capabilities.inlayHintProvider = protocol::InlayHintOptions{ .resolveProvider = true };
|
||||
result.capabilities.foldingRangeProvider = true;
|
||||
result.capabilities.selectionRangeProvider = true;
|
||||
result.capabilities.linkedEditingRangeProvider = true;
|
||||
result.capabilities.monikerProvider = true;
|
||||
result.capabilities.inlineValueProvider = true;
|
||||
result.capabilities.documentFormattingProvider = true;
|
||||
result.capabilities.documentRangeFormattingProvider = true;
|
||||
result.capabilities.documentOnTypeFormattingProvider = BuildOnTypeFormattingOptions();
|
||||
result.capabilities.executeCommandProvider = BuildExecuteCommandOptions();
|
||||
|
||||
protocol::DiagnosticOptions diagnostic;
|
||||
diagnostic.identifier = "syntax";
|
||||
diagnostic.interFileDependencies = false;
|
||||
diagnostic.workspaceDiagnostics = true;
|
||||
result.capabilities.diagnosticProvider = std::move(diagnostic);
|
||||
|
||||
protocol::ServerCapabilities::Workspace workspace;
|
||||
protocol::ServerCapabilities::Workspace::FileOperations file_operations;
|
||||
file_operations.didCreate = true;
|
||||
file_operations.willCreate = true;
|
||||
file_operations.didDelete = true;
|
||||
file_operations.willDelete = true;
|
||||
file_operations.didRename = true;
|
||||
file_operations.willRename = true;
|
||||
workspace.fileOperations = std::move(file_operations);
|
||||
result.capabilities.workspace = std::move(workspace);
|
||||
// NOTE: Only advertise the minimal feature set for now:
|
||||
// - completion (with resolve)
|
||||
// - go-to-definition
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -5,166 +5,100 @@ export module lsp.provider.manifest;
|
||||
import lsp.core.dispacther;
|
||||
import lsp.provider.base.registry;
|
||||
|
||||
import lsp.provider.call_hierarchy.incoming_calls;
|
||||
import lsp.provider.call_hierarchy.outgoing_calls;
|
||||
import lsp.provider.cancel_request.cancel_request;
|
||||
import lsp.provider.client.register_capability;
|
||||
import lsp.provider.client.unregister_capability;
|
||||
import lsp.provider.code_action.resolve;
|
||||
import lsp.provider.code_lens.resolve;
|
||||
import lsp.provider.completion_item.resolve;
|
||||
import lsp.provider.document_link.resolve;
|
||||
import lsp.provider.exit.exit;
|
||||
import lsp.provider.initialize.initialize;
|
||||
import lsp.provider.initialized.initialized;
|
||||
import lsp.provider.inlay_hint.resolve;
|
||||
import lsp.provider.shutdown.shutdown;
|
||||
import lsp.provider.telemetry.event;
|
||||
import lsp.provider.text_document.code_action;
|
||||
import lsp.provider.text_document.code_lens;
|
||||
import lsp.provider.text_document.color_presentation;
|
||||
import lsp.provider.text_document.completion;
|
||||
import lsp.provider.text_document.definition;
|
||||
import lsp.provider.text_document.diagnostic;
|
||||
import lsp.provider.text_document.did_change;
|
||||
import lsp.provider.text_document.did_close;
|
||||
import lsp.provider.text_document.did_open;
|
||||
import lsp.provider.text_document.document_color;
|
||||
import lsp.provider.text_document.document_highlight;
|
||||
import lsp.provider.text_document.document_link;
|
||||
import lsp.provider.text_document.document_symbol;
|
||||
import lsp.provider.text_document.folding_range;
|
||||
import lsp.provider.text_document.formatting;
|
||||
import lsp.provider.text_document.hover;
|
||||
import lsp.provider.text_document.implementation;
|
||||
import lsp.provider.text_document.inlay_hint;
|
||||
import lsp.provider.text_document.inline_value;
|
||||
import lsp.provider.text_document.linked_editing_range;
|
||||
import lsp.provider.text_document.moniker;
|
||||
import lsp.provider.text_document.on_type_formatting;
|
||||
import lsp.provider.text_document.prepare_call_hierarchy;
|
||||
import lsp.provider.text_document.prepare_rename;
|
||||
import lsp.provider.text_document.prepare_type_hierarchy;
|
||||
import lsp.provider.text_document.publish_diagnostics;
|
||||
import lsp.provider.text_document.range_formatting;
|
||||
import lsp.provider.text_document.references;
|
||||
import lsp.provider.text_document.rename;
|
||||
import lsp.provider.text_document.selection_range;
|
||||
import lsp.provider.text_document.semantic_tokens;
|
||||
import lsp.provider.text_document.signature_help;
|
||||
import lsp.provider.text_document.type_definition;
|
||||
import lsp.provider.text_document.completion;
|
||||
import lsp.provider.trace.set_trace;
|
||||
import lsp.provider.type_hierarchy.subtypes;
|
||||
import lsp.provider.type_hierarchy.supertypes;
|
||||
import lsp.provider.window.log_message;
|
||||
import lsp.provider.window.show_document;
|
||||
import lsp.provider.window.show_message;
|
||||
import lsp.provider.window.show_message_request;
|
||||
import lsp.provider.window.work_done_progress_create;
|
||||
import lsp.provider.workspace.apply_edit;
|
||||
import lsp.provider.workspace.code_lens_refresh;
|
||||
import lsp.provider.workspace.configuration;
|
||||
import lsp.provider.workspace.diagnostic;
|
||||
import lsp.provider.workspace.did_change_configuration;
|
||||
import lsp.provider.workspace.did_change_watched_files;
|
||||
import lsp.provider.workspace.did_change_workspace_folders;
|
||||
import lsp.provider.workspace.did_create_files;
|
||||
import lsp.provider.workspace.did_delete_files;
|
||||
import lsp.provider.workspace.did_rename_files;
|
||||
import lsp.provider.workspace.diagnostic_refresh;
|
||||
import lsp.provider.workspace.execute_command;
|
||||
import lsp.provider.workspace.inlay_hint_refresh;
|
||||
import lsp.provider.workspace.inline_value_refresh;
|
||||
import lsp.provider.workspace.semantic_tokens_refresh;
|
||||
import lsp.provider.workspace.symbol;
|
||||
import lsp.provider.workspace.workspace_folders;
|
||||
import lsp.provider.workspace.will_create_files;
|
||||
import lsp.provider.workspace.will_delete_files;
|
||||
import lsp.provider.workspace.will_rename_files;
|
||||
import lsp.provider.workspace_symbol.resolve;
|
||||
|
||||
// NOTE: keep other providers implemented but disabled.
|
||||
// Uncomment when re-enabling additional capabilities.
|
||||
// import lsp.provider.call_hierarchy.incoming_calls;
|
||||
// import lsp.provider.call_hierarchy.outgoing_calls;
|
||||
// import lsp.provider.cancel_request.cancel_request;
|
||||
// import lsp.provider.client.register_capability;
|
||||
// import lsp.provider.client.unregister_capability;
|
||||
// import lsp.provider.code_action.resolve;
|
||||
// import lsp.provider.code_lens.resolve;
|
||||
// import lsp.provider.document_link.resolve;
|
||||
// import lsp.provider.exit.exit;
|
||||
// import lsp.provider.inlay_hint.resolve;
|
||||
// import lsp.provider.telemetry.event;
|
||||
// import lsp.provider.text_document.code_action;
|
||||
// import lsp.provider.text_document.code_lens;
|
||||
// import lsp.provider.text_document.color_presentation;
|
||||
// import lsp.provider.text_document.diagnostic;
|
||||
// import lsp.provider.text_document.document_color;
|
||||
// import lsp.provider.text_document.document_highlight;
|
||||
// import lsp.provider.text_document.document_link;
|
||||
// import lsp.provider.text_document.document_symbol;
|
||||
// import lsp.provider.text_document.folding_range;
|
||||
// import lsp.provider.text_document.formatting;
|
||||
// import lsp.provider.text_document.hover;
|
||||
// import lsp.provider.text_document.implementation;
|
||||
// import lsp.provider.text_document.inlay_hint;
|
||||
// import lsp.provider.text_document.inline_value;
|
||||
// import lsp.provider.text_document.linked_editing_range;
|
||||
// import lsp.provider.text_document.moniker;
|
||||
// import lsp.provider.text_document.on_type_formatting;
|
||||
// import lsp.provider.text_document.prepare_call_hierarchy;
|
||||
// import lsp.provider.text_document.prepare_rename;
|
||||
// import lsp.provider.text_document.prepare_type_hierarchy;
|
||||
// import lsp.provider.text_document.publish_diagnostics;
|
||||
// import lsp.provider.text_document.range_formatting;
|
||||
// import lsp.provider.text_document.references;
|
||||
// import lsp.provider.text_document.rename;
|
||||
// import lsp.provider.text_document.selection_range;
|
||||
// import lsp.provider.text_document.semantic_tokens;
|
||||
// import lsp.provider.text_document.signature_help;
|
||||
// import lsp.provider.text_document.type_definition;
|
||||
// import lsp.provider.type_hierarchy.subtypes;
|
||||
// import lsp.provider.type_hierarchy.supertypes;
|
||||
// import lsp.provider.window.log_message;
|
||||
// import lsp.provider.window.show_document;
|
||||
// import lsp.provider.window.show_message;
|
||||
// import lsp.provider.window.show_message_request;
|
||||
// import lsp.provider.window.work_done_progress_create;
|
||||
// import lsp.provider.workspace.apply_edit;
|
||||
// import lsp.provider.workspace.code_lens_refresh;
|
||||
// import lsp.provider.workspace.configuration;
|
||||
// import lsp.provider.workspace.diagnostic;
|
||||
// import lsp.provider.workspace.did_change_configuration;
|
||||
// import lsp.provider.workspace.did_change_watched_files;
|
||||
// import lsp.provider.workspace.did_change_workspace_folders;
|
||||
// import lsp.provider.workspace.did_create_files;
|
||||
// import lsp.provider.workspace.did_delete_files;
|
||||
// import lsp.provider.workspace.did_rename_files;
|
||||
// import lsp.provider.workspace.diagnostic_refresh;
|
||||
// import lsp.provider.workspace.execute_command;
|
||||
// import lsp.provider.workspace.inlay_hint_refresh;
|
||||
// import lsp.provider.workspace.inline_value_refresh;
|
||||
// import lsp.provider.workspace.semantic_tokens_refresh;
|
||||
// import lsp.provider.workspace.symbol;
|
||||
// import lsp.provider.workspace.workspace_folders;
|
||||
// import lsp.provider.workspace.will_create_files;
|
||||
// import lsp.provider.workspace.will_delete_files;
|
||||
// import lsp.provider.workspace.will_rename_files;
|
||||
// import lsp.provider.workspace_symbol.resolve;
|
||||
|
||||
export namespace lsp::provider
|
||||
{
|
||||
using AllProviders = ProviderRegistry<
|
||||
call_hierarchy::IncomingCalls,
|
||||
call_hierarchy::OutgoingCalls,
|
||||
CancelRequest,
|
||||
client::RegisterCapability,
|
||||
client::UnregisterCapability,
|
||||
code_action::Resolve,
|
||||
code_lens::Resolve,
|
||||
completion_item::Resolve,
|
||||
document_link::Resolve,
|
||||
Exit,
|
||||
Initialize,
|
||||
Initialized,
|
||||
inlay_hint::Resolve,
|
||||
Shutdown,
|
||||
telemetry::Event,
|
||||
text_document::CodeAction,
|
||||
text_document::CodeLens,
|
||||
text_document::ColorPresentation,
|
||||
text_document::Completion,
|
||||
text_document::Definition,
|
||||
text_document::Diagnostic,
|
||||
text_document::DidChange,
|
||||
text_document::DidClose,
|
||||
text_document::DidOpen,
|
||||
text_document::DocumentColor,
|
||||
text_document::DocumentHighlight,
|
||||
text_document::DocumentLink,
|
||||
text_document::DocumentSymbol,
|
||||
text_document::FoldingRange,
|
||||
text_document::Formatting,
|
||||
text_document::Hover,
|
||||
text_document::Implementation,
|
||||
text_document::InlayHint,
|
||||
text_document::InlineValue,
|
||||
text_document::LinkedEditingRange,
|
||||
text_document::Moniker,
|
||||
text_document::OnTypeFormatting,
|
||||
text_document::PrepareCallHierarchy,
|
||||
text_document::PrepareRename,
|
||||
text_document::PrepareTypeHierarchy,
|
||||
text_document::PublishDiagnostics,
|
||||
text_document::RangeFormatting,
|
||||
text_document::References,
|
||||
text_document::Rename,
|
||||
text_document::SelectionRange,
|
||||
text_document::SemanticTokensRange,
|
||||
text_document::SemanticTokensFull,
|
||||
text_document::SemanticTokensFullDelta,
|
||||
text_document::SignatureHelp,
|
||||
text_document::TypeDefinition,
|
||||
SetTrace,
|
||||
type_hierarchy::Subtypes,
|
||||
type_hierarchy::Supertypes,
|
||||
window::LogMessage,
|
||||
window::ShowDocument,
|
||||
window::ShowMessage,
|
||||
window::ShowMessageRequest,
|
||||
window::WorkDoneProgressCreate,
|
||||
workspace::ApplyEdit,
|
||||
workspace::CodeLensRefresh,
|
||||
workspace::Configuration,
|
||||
workspace::Diagnostic,
|
||||
workspace::DidChangeConfiguration,
|
||||
workspace::DidChangeWatchedFiles,
|
||||
workspace::DidChangeWorkspaceFolders,
|
||||
workspace::DidCreateFiles,
|
||||
workspace::DidDeleteFiles,
|
||||
workspace::DidRenameFiles,
|
||||
workspace::DiagnosticRefresh,
|
||||
workspace::ExecuteCommand,
|
||||
workspace::InlayHintRefresh,
|
||||
workspace::InlineValueRefresh,
|
||||
workspace::SemanticTokensRefresh,
|
||||
workspace::Symbol,
|
||||
workspace::WorkspaceFolders,
|
||||
workspace::WillCreateFiles,
|
||||
workspace::WillDeleteFiles,
|
||||
workspace::WillRenameFiles,
|
||||
workspace_symbol::Resolve
|
||||
SetTrace
|
||||
>;
|
||||
|
||||
static_assert(AllProviders::kProviderCount > 0, "No providers registered.");
|
||||
|
||||
Reference in New Issue
Block a user