✨ feat(provider): add compile-time registry
This commit is contained in:
@@ -14,28 +14,22 @@ namespace transform = lsp::codec;
|
||||
|
||||
export namespace lsp::provider::client
|
||||
{
|
||||
class RegisterCapability : public IRequestProvider
|
||||
class RegisterCapability : public AutoRegisterProvider<RegisterCapability, IRequestProvider>
|
||||
{
|
||||
public:
|
||||
static constexpr std::string_view kMethod = "client/registerCapability";
|
||||
static constexpr std::string_view kProviderName = "ClientRegisterCapability";
|
||||
RegisterCapability() = default;
|
||||
|
||||
std::string GetMethod() const override;
|
||||
std::string GetProviderName() const override;
|
||||
std::string ProvideResponse(const protocol::RequestMessage& request, ExecutionContext& context) override;
|
||||
};
|
||||
}
|
||||
|
||||
namespace lsp::provider::client
|
||||
{
|
||||
std::string RegisterCapability::GetMethod() const
|
||||
{
|
||||
return "client/registerCapability";
|
||||
}
|
||||
|
||||
|
||||
std::string RegisterCapability::GetProviderName() const
|
||||
{
|
||||
return "ClientRegisterCapability";
|
||||
}
|
||||
|
||||
|
||||
std::string RegisterCapability::ProvideResponse(const protocol::RequestMessage& request, [[maybe_unused]] ExecutionContext& context)
|
||||
{
|
||||
@@ -45,7 +39,7 @@ namespace lsp::provider::client
|
||||
|
||||
protocol::ResponseMessage response;
|
||||
response.id = request.id;
|
||||
response.result = std::nullopt; // 成功返回null
|
||||
response.result = protocol::LSPAny{}; // explicit null result
|
||||
|
||||
std::optional<std::string> json = transform::Serialize(response);
|
||||
if (!json.has_value())
|
||||
|
||||
@@ -14,35 +14,29 @@ namespace transform = lsp::codec;
|
||||
|
||||
export namespace lsp::provider::client
|
||||
{
|
||||
class UnregisterCapability : public IRequestProvider
|
||||
class UnregisterCapability : public AutoRegisterProvider<UnregisterCapability, IRequestProvider>
|
||||
{
|
||||
public:
|
||||
static constexpr std::string_view kMethod = "client/unregisterCapability";
|
||||
static constexpr std::string_view kProviderName = "ClientUnregisterCapability";
|
||||
UnregisterCapability() = default;
|
||||
|
||||
std::string GetMethod() const override;
|
||||
std::string GetProviderName() const override;
|
||||
std::string ProvideResponse(const protocol::RequestMessage& request, ExecutionContext& context) override;
|
||||
};
|
||||
}
|
||||
|
||||
namespace lsp::provider::client
|
||||
{
|
||||
std::string UnregisterCapability::GetMethod() const
|
||||
{
|
||||
return "client/unregisterCapability";
|
||||
}
|
||||
|
||||
|
||||
std::string UnregisterCapability::GetProviderName() const
|
||||
{
|
||||
return "ClientUnregisterCapability";
|
||||
}
|
||||
|
||||
|
||||
std::string UnregisterCapability::ProvideResponse(const protocol::RequestMessage& request, [[maybe_unused]] ExecutionContext& context)
|
||||
{
|
||||
spdlog::debug("UnregisterCapabilityProvider: Providing response for method {}", request.method);
|
||||
protocol::ResponseMessage response;
|
||||
response.id = request.id;
|
||||
response.result = std::nullopt;
|
||||
response.result = protocol::LSPAny{};
|
||||
|
||||
std::optional<std::string> json = transform::Serialize(response);
|
||||
if (!json.has_value())
|
||||
|
||||
Reference in New Issue
Block a user