lsp-server first commit
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
#include "./initialize_provider.hpp"
|
||||
#include "../../lsp/logger.hpp"
|
||||
|
||||
namespace lsp::providers::initialize
|
||||
{
|
||||
|
||||
nlohmann::json InitializeProvider::ProvideResponse(const LspRequest& request)
|
||||
{
|
||||
nlohmann::json response;
|
||||
response["jsonrpc"] = "2.0";
|
||||
response["id"] = request.id;
|
||||
response["result"] = BuildInitializeResult();
|
||||
log::Debug("InitializeProvider: Providing response for method '", request.method, "' with id ", request.id);
|
||||
return response;
|
||||
}
|
||||
|
||||
inline std::string InitializeProvider::GetMethod() const
|
||||
{
|
||||
return "initialize";
|
||||
}
|
||||
|
||||
inline std::string InitializeProvider::GetProviderName() const
|
||||
{
|
||||
return "InitializeProvider";
|
||||
}
|
||||
|
||||
nlohmann::json InitializeProvider::BuildInitializeResult()
|
||||
{
|
||||
nlohmann::json result;
|
||||
result["capabilities"] = BuildServerCapabilities();
|
||||
result["serverInfo"] = BuildServerInfo();
|
||||
return result;
|
||||
}
|
||||
|
||||
nlohmann::json InitializeProvider::BuildServerCapabilities()
|
||||
{
|
||||
nlohmann::json capabilities;
|
||||
capabilities["textDocumentSync"] = nlohmann::json();
|
||||
capabilities["textDocumentSync"]["change"] = 2;
|
||||
capabilities["textDocumentSync"]["openClose"] = true;
|
||||
capabilities["textDocumentSync"]["save"] = true;
|
||||
capabilities["completionProvider"] = nlohmann::json();
|
||||
capabilities["completionProvider"]["resolveProvider"] = false;
|
||||
return capabilities;
|
||||
}
|
||||
|
||||
nlohmann::json InitializeProvider::BuildServerInfo()
|
||||
{
|
||||
nlohmann::json serverInfo;
|
||||
serverInfo["name"] = "TSL Language Server";
|
||||
serverInfo["version"] = "1.0.0";
|
||||
return serverInfo;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
#include "../base/provider_interface.hpp"
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
namespace lsp::providers::initialize
|
||||
{
|
||||
class InitializeProvider : public ILspProvider
|
||||
{
|
||||
public:
|
||||
InitializeProvider() = default;
|
||||
nlohmann::json ProvideResponse(const LspRequest& request) override;
|
||||
std::string GetMethod() const override;
|
||||
std::string GetProviderName() const override;
|
||||
|
||||
private:
|
||||
nlohmann::json BuildServerCapabilities();
|
||||
nlohmann::json BuildServerInfo();
|
||||
nlohmann::json BuildInitializeResult();
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user