feat: rename java operation
1. fix java rename don't working log: fix bug Change-Id: I3ed898e444a31c41128a99747b1cfcc49a714b5f
This commit is contained in:
parent
59fba25a7e
commit
f95887a4e8
|
|
@ -25,6 +25,7 @@
|
|||
#include "inotify/inotify.h"
|
||||
#include "lsp/client.h"
|
||||
#include "lsp/protocol.h"
|
||||
#include "lsp/newprotocol.h"
|
||||
#include "type/constants.h"
|
||||
#include "type/menuext.h"
|
||||
#include "util/customicons.h"
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ Client::Client(QObject *parent)
|
|||
qRegisterMetaType<DiagnosticsParams>("DiagnosticsParams");
|
||||
qRegisterMetaType<Data>("Data");
|
||||
qRegisterMetaType<QList<Data>>("QList<Data>");
|
||||
qRegisterMetaType<RenameChanges>("RenameChanges");
|
||||
qRegisterMetaType<newlsp::Workspace::WorkspaceEdit>("newlsp::Workspace::WorkspaceEdit");
|
||||
qRegisterMetaType<References>("References");
|
||||
}
|
||||
|
||||
|
|
@ -413,24 +413,80 @@ bool Client::renameResult(const QJsonObject &jsonObj)
|
|||
<< jsonObj;
|
||||
d->requestSave.remove(calledID);
|
||||
QJsonObject resultObj = jsonObj.value(K_RESULT).toObject();
|
||||
QJsonObject changes = resultObj.value("changes").toObject();
|
||||
lsp::RenameChanges changesResult;
|
||||
for (auto fileKey : changes.keys()) {
|
||||
RenameChange change;
|
||||
change.documentUri = fileKey;
|
||||
auto addionTextEditArray = changes[fileKey].toArray();
|
||||
for (auto addion : addionTextEditArray){
|
||||
auto addionObj = addion.toObject();
|
||||
auto rangeObj = addionObj.value(K_RANGE).toObject();
|
||||
auto startObj = rangeObj.value(K_START).toObject();
|
||||
auto endObj = rangeObj.value(K_END).toObject();
|
||||
QString newText = addionObj.value(K_NewText).toString();
|
||||
Position startPos = {startObj.value(K_LINE).toInt(), startObj.value(K_CHARACTER).toInt()};
|
||||
Position endPos = {endObj.value(K_LINE).toInt(), endObj.value(K_CHARACTER).toInt()};
|
||||
Range range = {startPos, endPos} ;
|
||||
change.edits << TextEdit {newText, range};
|
||||
QJsonObject changesObj = resultObj.value("changes").toObject();
|
||||
newlsp::Workspace::WorkspaceEdit changesResult;
|
||||
if (!changesObj.isEmpty()) {
|
||||
// std::optional<> changes;
|
||||
std::map<newlsp::DocumentUri, std::vector<newlsp::TextEdit>> changes;
|
||||
for (auto fileKey : changesObj.keys()) {
|
||||
auto addionTextEditArray = changesObj[fileKey].toArray();
|
||||
std::vector<newlsp::TextEdit> textEdits;
|
||||
for (auto addion : addionTextEditArray){
|
||||
auto addionObj = addion.toObject();
|
||||
auto rangeObj = addionObj.value(K_RANGE).toObject();
|
||||
auto startObj = rangeObj.value(K_START).toObject();
|
||||
auto endObj = rangeObj.value(K_END).toObject();
|
||||
std::string newText = addionObj.value(K_NewText).toString().toStdString();
|
||||
newlsp::Position startPos = {startObj.value(K_LINE).toInt(), startObj.value(K_CHARACTER).toInt()};
|
||||
newlsp::Position endPos = {endObj.value(K_LINE).toInt(), endObj.value(K_CHARACTER).toInt()};
|
||||
newlsp::Range range = {startPos, endPos} ;
|
||||
textEdits.push_back(newlsp::TextEdit{range, newText});
|
||||
}
|
||||
changes[fileKey.toStdString()] = textEdits;
|
||||
}
|
||||
changesResult << change;
|
||||
changesResult.changes = changes;
|
||||
}
|
||||
|
||||
QJsonArray documentChangesArray = resultObj.value("documentChanges").toArray();
|
||||
if (!documentChangesArray.isEmpty()) {
|
||||
std::vector<newlsp::TextDocumentEdit> documentChanges;
|
||||
for (auto val : documentChangesArray) {
|
||||
std::vector<newlsp::AnnotatedTextEdit> edits;
|
||||
QJsonArray editsArray = val.toObject().value("edits").toArray();
|
||||
for (auto val : editsArray) {
|
||||
newlsp::AnnotatedTextEdit annotatedTextEdit;
|
||||
std::string newText = val.toObject().value(K_NewText).toString().toStdString();
|
||||
QJsonObject rangeObj = val.toObject().value(K_RANGE).toObject();
|
||||
QJsonObject startObj = rangeObj.value(K_START).toObject();
|
||||
QJsonObject endObj = rangeObj.value(K_END).toObject();
|
||||
newlsp::Position start = {startObj.value(K_LINE).toInt(), startObj.value(K_CHARACTER).toInt()};
|
||||
newlsp::Position end = {endObj.value(K_LINE).toInt(), endObj.value(K_CHARACTER).toInt()};
|
||||
newlsp::Range range{start, end};
|
||||
annotatedTextEdit.annotationId = {};
|
||||
annotatedTextEdit.range = range;
|
||||
annotatedTextEdit.newText = newText;
|
||||
edits.push_back(annotatedTextEdit);
|
||||
}
|
||||
QJsonObject textDoumentObj = val.toObject().value("textDocument").toObject();
|
||||
newlsp::OptionalVersionedTextDocumentIdentifier textDocument;
|
||||
textDocument.version = textDoumentObj.value(K_VERSION).toInt();
|
||||
textDocument.uri = textDoumentObj.value(K_URI).toString().toStdString();
|
||||
|
||||
newlsp::TextDocumentEdit documentChangesElem;
|
||||
documentChangesElem.edits = edits;
|
||||
documentChangesElem.textDocument = textDocument;
|
||||
documentChanges.push_back(documentChangesElem);
|
||||
}
|
||||
changesResult.documentChanges = documentChanges;
|
||||
}
|
||||
|
||||
QJsonObject changeAnnotationsObj = resultObj.value("changeAnnotations").toObject();
|
||||
if (!changeAnnotationsObj.isEmpty()) {
|
||||
std::map<std::string, newlsp::Workspace::ChangeAnnotation> changeAnnotations;
|
||||
for (auto idKey: changeAnnotationsObj.keys()) {
|
||||
QJsonObject changeAnnotationObj = changeAnnotationsObj[idKey].toObject();
|
||||
newlsp::Workspace::ChangeAnnotation changeAnnotation;
|
||||
std::string label = changeAnnotationObj.value("label").toString().toStdString();
|
||||
changeAnnotation.label = label;
|
||||
if (changeAnnotationObj.contains("needsConfirmation")) {
|
||||
changeAnnotation.needsConfirmation = changeAnnotationObj.value("needsConfirmation").toBool();
|
||||
}
|
||||
if (changeAnnotationObj.contains("description")) {
|
||||
changeAnnotation.description = changeAnnotationObj.value("description").toString().toStdString();
|
||||
}
|
||||
changeAnnotations[idKey.toStdString()] = changeAnnotation;
|
||||
}
|
||||
changesResult.changeAnnotations = changeAnnotations;
|
||||
}
|
||||
emit requestResult(changesResult);
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#define CLIENT_H
|
||||
|
||||
#include "common/lsp/protocol.h"
|
||||
#include "common/lsp/newprotocol.h"
|
||||
|
||||
#include <QTcpSocket>
|
||||
#include <QThread>
|
||||
|
|
@ -82,7 +83,7 @@ signals:
|
|||
void requestResult(const Highlights &highlights);
|
||||
void requestResult(const DefinitionProvider &definitionProvider);
|
||||
void requestResult(const QList<Data> &tokensResult);
|
||||
void requestResult(const RenameChanges &changes);
|
||||
void requestResult(const newlsp::Workspace::WorkspaceEdit &changes);
|
||||
void requestResult(const References &refs);
|
||||
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -20,27 +20,27 @@
|
|||
*/
|
||||
#include "newprotocol.h"
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::JsonConvert::formatScope(const std::string &src)
|
||||
std::string newlsp::Lifecycle::Initialize::JsonConvert::formatScope(const std::string &src)
|
||||
{
|
||||
return "{" + src + "}";
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::JsonConvert::formatKey(const std::string &key)
|
||||
std::string newlsp::Lifecycle::Initialize::JsonConvert::formatKey(const std::string &key)
|
||||
{
|
||||
return "\"" + key + "\"";
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::JsonConvert::formatValue(unsigned int value)
|
||||
std::string newlsp::Lifecycle::Initialize::JsonConvert::formatValue(unsigned int value)
|
||||
{
|
||||
return std::to_string(value);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::JsonConvert::formatValue(int value)
|
||||
std::string newlsp::Lifecycle::Initialize::JsonConvert::formatValue(int value)
|
||||
{
|
||||
return std::to_string(value);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::JsonConvert::formatValue(bool value)
|
||||
std::string newlsp::Lifecycle::Initialize::JsonConvert::formatValue(bool value)
|
||||
{
|
||||
if (true == value)
|
||||
return "true";
|
||||
|
|
@ -49,12 +49,12 @@ std::string lsp::Lifecycle::Initialize::JsonConvert::formatValue(bool value)
|
|||
return "false";
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::JsonConvert::formatValue(const std::string &value)
|
||||
std::string newlsp::Lifecycle::Initialize::JsonConvert::formatValue(const std::string &value)
|
||||
{
|
||||
return "\"" + value + "\"";
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::JsonConvert::formatValue(const std::vector<int> &vecInt)
|
||||
std::string newlsp::Lifecycle::Initialize::JsonConvert::formatValue(const std::vector<int> &vecInt)
|
||||
{
|
||||
std::string ret;
|
||||
if (vecInt.size() < 0)
|
||||
|
|
@ -71,7 +71,7 @@ std::string lsp::Lifecycle::Initialize::JsonConvert::formatValue(const std::vect
|
|||
return ret;
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::JsonConvert::formatValue(const std::vector<std::string> &vecString)
|
||||
std::string newlsp::Lifecycle::Initialize::JsonConvert::formatValue(const std::vector<std::string> &vecString)
|
||||
{
|
||||
std::string ret;
|
||||
if (vecString.size() < 0)
|
||||
|
|
@ -88,7 +88,7 @@ std::string lsp::Lifecycle::Initialize::JsonConvert::formatValue(const std::vect
|
|||
return ret;
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::JsonConvert::addValue(const std::string &src,
|
||||
std::string newlsp::Lifecycle::Initialize::JsonConvert::addValue(const std::string &src,
|
||||
const std::pair<std::string,
|
||||
std::any> &elem)
|
||||
{
|
||||
|
|
@ -113,7 +113,7 @@ std::string lsp::Lifecycle::Initialize::JsonConvert::addValue(const std::string
|
|||
return temp;
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::JsonConvert::addValue(const std::string &src,
|
||||
std::string newlsp::Lifecycle::Initialize::JsonConvert::addValue(const std::string &src,
|
||||
std::initializer_list<std::pair<std::string,
|
||||
std::any>> &elems)
|
||||
{
|
||||
|
|
@ -124,7 +124,7 @@ std::string lsp::Lifecycle::Initialize::JsonConvert::addValue(const std::string
|
|||
return ret;
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::WorkDoneProgressParams::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::WorkDoneProgressParams::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (workDoneToken) {
|
||||
|
|
@ -136,7 +136,7 @@ std::string lsp::Lifecycle::Initialize::WorkDoneProgressParams::toStdString() co
|
|||
return ret;
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::ResolveSupport::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::ResolveSupport::toStdString() const
|
||||
{
|
||||
return formatScope(
|
||||
addValue({}, {
|
||||
|
|
@ -146,12 +146,12 @@ std::string lsp::Lifecycle::Initialize::ResolveSupport::toStdString() const
|
|||
);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::CompletionClientCapabilities::CompletionItem::InsertTextModeSupport::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::CompletionClientCapabilities::CompletionItem::InsertTextModeSupport::toStdString() const
|
||||
{
|
||||
return formatScope(addValue({}, {"valueSet", formatValue(valueSet)}));
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::CompletionClientCapabilities::CompletionList::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::CompletionClientCapabilities::CompletionList::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (itemDefaults)
|
||||
|
|
@ -159,7 +159,7 @@ std::string lsp::Lifecycle::Initialize::CompletionClientCapabilities::Completion
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::CompletionClientCapabilities::CompletionItemKind::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::CompletionClientCapabilities::CompletionItemKind::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (valueSet)
|
||||
|
|
@ -167,12 +167,12 @@ std::string lsp::Lifecycle::Initialize::CompletionClientCapabilities::Completion
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::CompletionClientCapabilities::CompletionItem::TagSupport::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::CompletionClientCapabilities::CompletionItem::TagSupport::toStdString() const
|
||||
{
|
||||
return formatScope(addValue({}, {"valueSet", formatValue(valueSet)}));
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::CompletionClientCapabilities::CompletionItem::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::CompletionClientCapabilities::CompletionItem::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (snippetSupport)
|
||||
|
|
@ -239,14 +239,14 @@ std::string lsp::Lifecycle::Initialize::CompletionClientCapabilities::Completion
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::CodeActionLiteralSupport::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::CodeActionLiteralSupport::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
ret = addValue(ret, {"codeActionKind", codeActionKind.toStdString()});
|
||||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::ParameterInformation::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::ParameterInformation::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (labelOffsetSupport)
|
||||
|
|
@ -257,7 +257,7 @@ std::string lsp::Lifecycle::Initialize::ParameterInformation::toStdString() cons
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::SignatureInformation::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::SignatureInformation::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
|
||||
|
|
@ -280,14 +280,14 @@ std::string lsp::Lifecycle::Initialize::SignatureInformation::toStdString() cons
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::CodeActionKind::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::CodeActionKind::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
ret = addValue(ret, {"valueSet", formatValue(valueSet)});
|
||||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::ChangeAnotationSupport::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::ChangeAnotationSupport::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (groupsOnLabel)
|
||||
|
|
@ -295,12 +295,12 @@ std::string lsp::Lifecycle::Initialize::ChangeAnotationSupport::toStdString() co
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::SymbolKind::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::SymbolKind::toStdString() const
|
||||
{
|
||||
return formatScope(addValue({}, {"valueSet", formatValue(valueSet)}));
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::FoldingRangeKind::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::FoldingRangeKind::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (valueSet)
|
||||
|
|
@ -308,7 +308,7 @@ std::string lsp::Lifecycle::Initialize::FoldingRangeKind::toStdString() const
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::FoldingRange::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::FoldingRange::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (collapsedText)
|
||||
|
|
@ -316,7 +316,7 @@ std::string lsp::Lifecycle::Initialize::FoldingRange::toStdString() const
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::WorkspaceEditClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::WorkspaceEditClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (documentChanges)
|
||||
|
|
@ -332,7 +332,7 @@ std::string lsp::Lifecycle::Initialize::WorkspaceEditClientCapabilities::toStdSt
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DidChangeConfigurationClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DidChangeConfigurationClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -340,7 +340,7 @@ std::string lsp::Lifecycle::Initialize::DidChangeConfigurationClientCapabilities
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DidChangeWatchedFilesClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DidChangeWatchedFilesClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -350,7 +350,7 @@ std::string lsp::Lifecycle::Initialize::DidChangeWatchedFilesClientCapabilities:
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::ExecuteCommandClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::ExecuteCommandClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -358,14 +358,14 @@ std::string lsp::Lifecycle::Initialize::ExecuteCommandClientCapabilities::toStdS
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::WorkspaceSymbolClientCapabilities::TagSupport::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::WorkspaceSymbolClientCapabilities::TagSupport::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
ret = addValue(ret, {"valueSet", formatValue(valueSet)});
|
||||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::WorkspaceSymbolClientCapabilities::toStdString() const{
|
||||
std::string newlsp::Lifecycle::Initialize::WorkspaceSymbolClientCapabilities::toStdString() const{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
ret = addValue(ret, {"dynamicRegistration", formatValue(dynamicRegistration.value())});
|
||||
|
|
@ -378,7 +378,7 @@ std::string lsp::Lifecycle::Initialize::WorkspaceSymbolClientCapabilities::toStd
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::SemanticTokensWorkspaceClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::SemanticTokensWorkspaceClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (refreshSupport.value())
|
||||
|
|
@ -386,7 +386,7 @@ std::string lsp::Lifecycle::Initialize::SemanticTokensWorkspaceClientCapabilitie
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::CodeLensWorkspaceClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::CodeLensWorkspaceClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (refreshSupport)
|
||||
|
|
@ -394,7 +394,7 @@ std::string lsp::Lifecycle::Initialize::CodeLensWorkspaceClientCapabilities::toS
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::InlineValueWorkspaceClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::InlineValueWorkspaceClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (refreshSupport)
|
||||
|
|
@ -402,7 +402,7 @@ std::string lsp::Lifecycle::Initialize::InlineValueWorkspaceClientCapabilities::
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::InlayHintWorkspaceClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::InlayHintWorkspaceClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (refreshSupport)
|
||||
|
|
@ -410,7 +410,7 @@ std::string lsp::Lifecycle::Initialize::InlayHintWorkspaceClientCapabilities::to
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DiagnosticWorkspaceClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DiagnosticWorkspaceClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (refreshSupport)
|
||||
|
|
@ -418,7 +418,7 @@ std::string lsp::Lifecycle::Initialize::DiagnosticWorkspaceClientCapabilities::t
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::TextDocumentSyncClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::TextDocumentSyncClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -432,7 +432,7 @@ std::string lsp::Lifecycle::Initialize::TextDocumentSyncClientCapabilities::toSt
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::CompletionClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::CompletionClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -450,7 +450,7 @@ std::string lsp::Lifecycle::Initialize::CompletionClientCapabilities::toStdStrin
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::HoverClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::HoverClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -460,7 +460,7 @@ std::string lsp::Lifecycle::Initialize::HoverClientCapabilities::toStdString() c
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::SignatureHelpClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::SignatureHelpClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -472,7 +472,7 @@ std::string lsp::Lifecycle::Initialize::SignatureHelpClientCapabilities::toStdSt
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DeclarationClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DeclarationClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -482,7 +482,7 @@ std::string lsp::Lifecycle::Initialize::DeclarationClientCapabilities::toStdStri
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DefinitionClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DefinitionClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -492,7 +492,7 @@ std::string lsp::Lifecycle::Initialize::DefinitionClientCapabilities::toStdStrin
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::TypeDefinitionClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::TypeDefinitionClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -502,7 +502,7 @@ std::string lsp::Lifecycle::Initialize::TypeDefinitionClientCapabilities::toStdS
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::ImplementationClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::ImplementationClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -512,7 +512,7 @@ std::string lsp::Lifecycle::Initialize::ImplementationClientCapabilities::toStdS
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::ReferenceClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::ReferenceClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -520,7 +520,7 @@ std::string lsp::Lifecycle::Initialize::ReferenceClientCapabilities::toStdString
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DocumentHighlightClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DocumentHighlightClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -528,7 +528,7 @@ std::string lsp::Lifecycle::Initialize::DocumentHighlightClientCapabilities::toS
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DocumentSymbolClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DocumentSymbolClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -545,7 +545,7 @@ std::string lsp::Lifecycle::Initialize::DocumentSymbolClientCapabilities::toStdS
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::CodeActionClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::CodeActionClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -565,7 +565,7 @@ std::string lsp::Lifecycle::Initialize::CodeActionClientCapabilities::toStdStrin
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::CodeLensClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::CodeLensClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -573,7 +573,7 @@ std::string lsp::Lifecycle::Initialize::CodeLensClientCapabilities::toStdString(
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DocumentLinkClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DocumentLinkClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -583,7 +583,7 @@ std::string lsp::Lifecycle::Initialize::DocumentLinkClientCapabilities::toStdStr
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DocumentColorClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DocumentColorClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -591,7 +591,7 @@ std::string lsp::Lifecycle::Initialize::DocumentColorClientCapabilities::toStdSt
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DocumentFormattingClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DocumentFormattingClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -599,7 +599,7 @@ std::string lsp::Lifecycle::Initialize::DocumentFormattingClientCapabilities::to
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DocumentRangeFormattingClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DocumentRangeFormattingClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -607,7 +607,7 @@ std::string lsp::Lifecycle::Initialize::DocumentRangeFormattingClientCapabilitie
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DocumentOnTypeFormattingClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DocumentOnTypeFormattingClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -615,7 +615,7 @@ std::string lsp::Lifecycle::Initialize::DocumentOnTypeFormattingClientCapabiliti
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::RenameClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::RenameClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -629,7 +629,7 @@ std::string lsp::Lifecycle::Initialize::RenameClientCapabilities::toStdString()
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::PublishDiagnosticsClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::PublishDiagnosticsClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (relatedInformation)
|
||||
|
|
@ -645,7 +645,7 @@ std::string lsp::Lifecycle::Initialize::PublishDiagnosticsClientCapabilities::to
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::FoldingRangeClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::FoldingRangeClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -661,7 +661,7 @@ std::string lsp::Lifecycle::Initialize::FoldingRangeClientCapabilities::toStdStr
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::SelectionRangeClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::SelectionRangeClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -669,7 +669,7 @@ std::string lsp::Lifecycle::Initialize::SelectionRangeClientCapabilities::toStdS
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::LinkedEditingRangeClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::LinkedEditingRangeClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -677,7 +677,7 @@ std::string lsp::Lifecycle::Initialize::LinkedEditingRangeClientCapabilities::to
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::CallHierarchyClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::CallHierarchyClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -685,7 +685,7 @@ std::string lsp::Lifecycle::Initialize::CallHierarchyClientCapabilities::toStdSt
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::SemanticTokensClientCapabilities::Requests::Full::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::SemanticTokensClientCapabilities::Requests::Full::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (delta) {
|
||||
|
|
@ -694,7 +694,7 @@ std::string lsp::Lifecycle::Initialize::SemanticTokensClientCapabilities::Reques
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::SemanticTokensClientCapabilities::Requests::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::SemanticTokensClientCapabilities::Requests::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (range) {
|
||||
|
|
@ -708,7 +708,7 @@ std::string lsp::Lifecycle::Initialize::SemanticTokensClientCapabilities::Reques
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::SemanticTokensClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::SemanticTokensClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -730,7 +730,7 @@ std::string lsp::Lifecycle::Initialize::SemanticTokensClientCapabilities::toStdS
|
|||
|
||||
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::MonikerClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::MonikerClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -738,7 +738,7 @@ std::string lsp::Lifecycle::Initialize::MonikerClientCapabilities::toStdString()
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::TypeHierarchyClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::TypeHierarchyClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -746,7 +746,7 @@ std::string lsp::Lifecycle::Initialize::TypeHierarchyClientCapabilities::toStdSt
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::InlineValueClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::InlineValueClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -754,7 +754,7 @@ std::string lsp::Lifecycle::Initialize::InlineValueClientCapabilities::toStdStri
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::InlayHintClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::InlayHintClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -764,7 +764,7 @@ std::string lsp::Lifecycle::Initialize::InlayHintClientCapabilities::toStdString
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DiagnosticClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DiagnosticClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -774,7 +774,7 @@ std::string lsp::Lifecycle::Initialize::DiagnosticClientCapabilities::toStdStrin
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::TextDocumentClientCapabilities::toStdString() const {
|
||||
std::string newlsp::Lifecycle::Initialize::TextDocumentClientCapabilities::toStdString() const {
|
||||
std::string ret;
|
||||
if (synchronization)
|
||||
ret = addValue(ret, {"synchronization", synchronization.value().toStdString()});
|
||||
|
|
@ -839,7 +839,7 @@ std::string lsp::Lifecycle::Initialize::TextDocumentClientCapabilities::toStdStr
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::FileOperations::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::FileOperations::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -859,7 +859,7 @@ std::string lsp::Lifecycle::Initialize::FileOperations::toStdString() const
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::Workspace::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::Workspace::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (applyEdit)
|
||||
|
|
@ -893,7 +893,7 @@ std::string lsp::Lifecycle::Initialize::Workspace::toStdString() const
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::ClientInfo::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::ClientInfo::toStdString() const
|
||||
{
|
||||
std::string result{};
|
||||
result = addValue(result, {"name", formatValue(name)});
|
||||
|
|
@ -902,7 +902,7 @@ std::string lsp::Lifecycle::Initialize::ClientInfo::toStdString() const
|
|||
return formatScope(result);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::NotebookDocumentSyncClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::NotebookDocumentSyncClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret = "";
|
||||
if (dynamicRegistration)
|
||||
|
|
@ -912,14 +912,14 @@ std::string lsp::Lifecycle::Initialize::NotebookDocumentSyncClientCapabilities::
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::NotebookDocumentClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::NotebookDocumentClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
ret = addValue({}, {"synchronization", synchronization.toStdString()});
|
||||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::MessageActionItem::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::MessageActionItem::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (additionalPropertiesSupport)
|
||||
|
|
@ -927,7 +927,7 @@ std::string lsp::Lifecycle::Initialize::MessageActionItem::toStdString() const
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::ShowMessageRequestClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::ShowMessageRequestClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (messageActionItem)
|
||||
|
|
@ -935,13 +935,13 @@ std::string lsp::Lifecycle::Initialize::ShowMessageRequestClientCapabilities::to
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::ShowDocumentClientCapabilities::toStdString() const {
|
||||
std::string newlsp::Lifecycle::Initialize::ShowDocumentClientCapabilities::toStdString() const {
|
||||
std::string ret;
|
||||
ret = addValue(ret, {"support", formatValue(support)});
|
||||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::Window::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::Window::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (workDoneProgress)
|
||||
|
|
@ -953,7 +953,7 @@ std::string lsp::Lifecycle::Initialize::Window::toStdString() const
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::StaleRequestSupport::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::StaleRequestSupport::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
ret = addValue(ret, {"cancel", formatValue(cancel)});
|
||||
|
|
@ -961,7 +961,7 @@ std::string lsp::Lifecycle::Initialize::StaleRequestSupport::toStdString() const
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::RegularExpressionsClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::RegularExpressionsClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
ret = addValue(ret, {"engine", formatValue(engine)});
|
||||
|
|
@ -970,7 +970,7 @@ std::string lsp::Lifecycle::Initialize::RegularExpressionsClientCapabilities::to
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::MarkdownClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::MarkdownClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
ret = addValue(ret, {"parser", formatValue(parser)});
|
||||
|
|
@ -981,7 +981,7 @@ std::string lsp::Lifecycle::Initialize::MarkdownClientCapabilities::toStdString(
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::General::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::General::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (staleRequestSupport)
|
||||
|
|
@ -997,7 +997,7 @@ std::string lsp::Lifecycle::Initialize::General::toStdString() const
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::ClientCapabilities::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::ClientCapabilities::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (workspace)
|
||||
|
|
@ -1013,7 +1013,7 @@ std::string lsp::Lifecycle::Initialize::ClientCapabilities::toStdString() const
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::WorkspaceFolder::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::WorkspaceFolder::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
ret = addValue(ret, {"uri", formatValue(uri)});
|
||||
|
|
@ -1021,8 +1021,8 @@ std::string lsp::Lifecycle::Initialize::WorkspaceFolder::toStdString() const
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::InitializeParams::formatValue(
|
||||
const std::vector<lsp::Lifecycle::Initialize::WorkspaceFolder> &workspaceFolders) const
|
||||
std::string newlsp::Lifecycle::Initialize::InitializeParams::formatValue(
|
||||
const std::vector<newlsp::Lifecycle::Initialize::WorkspaceFolder> &workspaceFolders) const
|
||||
{
|
||||
std::string ret;
|
||||
ret += "[";
|
||||
|
|
@ -1036,7 +1036,7 @@ std::string lsp::Lifecycle::Initialize::InitializeParams::formatValue(
|
|||
return ret;
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::InitializeParams::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::InitializeParams::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
|
||||
|
|
@ -1068,14 +1068,14 @@ std::string lsp::Lifecycle::Initialize::InitializeParams::toStdString() const
|
|||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::DocumentSymbolClientCapabilities::TagSupport::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::DocumentSymbolClientCapabilities::TagSupport::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
ret = addValue(ret, {"valueSet", formatValue(valueSet)});
|
||||
return formatScope(ret);
|
||||
}
|
||||
|
||||
std::string lsp::Lifecycle::Initialize::PublishDiagnosticsClientCapabilities::TagSupport::toStdString() const
|
||||
std::string newlsp::Lifecycle::Initialize::PublishDiagnosticsClientCapabilities::TagSupport::toStdString() const
|
||||
{
|
||||
std::string ret;
|
||||
ret = addValue(ret, {"valueSet", formatValue(valueSet)});
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
#ifndef NEWPROTOCOL_H
|
||||
#define NEWPROTOCOL_H
|
||||
|
||||
#include "type/menuext.h"
|
||||
#include "common/type/menuext.h"
|
||||
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
|
|
@ -32,7 +32,24 @@
|
|||
#include <optional>
|
||||
#include <any>
|
||||
|
||||
namespace lsp {
|
||||
#include <QDebug>
|
||||
namespace newlsp {
|
||||
|
||||
template<class T>
|
||||
static bool any_contrast(const std::any &any)
|
||||
{
|
||||
qInfo() << any.type().name();
|
||||
qInfo() << std::any(T()).type().name();
|
||||
if (any.type() == std::any(T()).type()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
typedef std::string DocumentUri;
|
||||
typedef std::string URI ;
|
||||
typedef std::any ProgressToken; // integer | string;
|
||||
|
||||
namespace Lifecycle {
|
||||
namespace Initialize {
|
||||
namespace BasicEnum {
|
||||
|
|
@ -251,26 +268,13 @@ struct JsonConvert
|
|||
static std::string formatValue(const std::vector<int> &vecInt);
|
||||
static std::string formatValue(const std::vector<std::string> &vecString);
|
||||
|
||||
template<class T>
|
||||
static bool any_contrast(const std::any &any)
|
||||
{
|
||||
if (any.type() == std::any(T()).type()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
static std::string addValue(const std::string &src,
|
||||
const std::pair<std::string, std::any> &elem);
|
||||
|
||||
static std::string addValue(const std::string &src,
|
||||
const std::pair<std::string, std::any> &elem);
|
||||
|
||||
static std::string addValue(const std::string &src,
|
||||
std::initializer_list<std::pair<std::string, std::any>> &elems);
|
||||
std::initializer_list<std::pair<std::string, std::any>> &elems);
|
||||
};
|
||||
|
||||
typedef std::string DocumentUri;
|
||||
typedef std::string URI ;
|
||||
typedef std::any ProgressToken; // integer | string;
|
||||
|
||||
struct WorkDoneProgressParams: JsonConvert
|
||||
{
|
||||
std::optional<ProgressToken> workDoneToken{};
|
||||
|
|
@ -877,5 +881,103 @@ struct InitializeParams : WorkDoneProgressParams
|
|||
};
|
||||
} // Initialize
|
||||
} // Lifecycle
|
||||
} // lsp
|
||||
|
||||
typedef std::string ChangeAnnotationIdentifier;
|
||||
|
||||
struct Position{
|
||||
int line;
|
||||
int character;
|
||||
};
|
||||
struct Range
|
||||
{
|
||||
Position start;
|
||||
Position end;
|
||||
};
|
||||
|
||||
struct TextEdit {
|
||||
Range range;
|
||||
std::string newText;
|
||||
};
|
||||
|
||||
struct AnnotatedTextEdit : TextEdit
|
||||
{
|
||||
ChangeAnnotationIdentifier annotationId;
|
||||
};
|
||||
|
||||
struct TextDocumentIdentifier
|
||||
{
|
||||
DocumentUri uri;
|
||||
};
|
||||
|
||||
struct OptionalVersionedTextDocumentIdentifier : TextDocumentIdentifier
|
||||
{
|
||||
std::optional<int> version;
|
||||
};
|
||||
|
||||
struct TextDocumentEdit
|
||||
{
|
||||
OptionalVersionedTextDocumentIdentifier textDocument;
|
||||
std::vector<AnnotatedTextEdit> edits;
|
||||
};
|
||||
|
||||
namespace Workspace
|
||||
{
|
||||
struct CreateFileOptions {
|
||||
std::optional<bool> overwrite;
|
||||
std::optional<bool> ignoreIfExists;
|
||||
};
|
||||
|
||||
struct RenameFileOptions {
|
||||
std::optional<bool> overwrite;
|
||||
std::optional<bool> ignoreIfExists;
|
||||
};
|
||||
|
||||
struct CreateFile
|
||||
{
|
||||
std::string kind{"create"};
|
||||
DocumentUri uri;
|
||||
std::optional<CreateFileOptions> options;
|
||||
std::optional<ChangeAnnotationIdentifier> annotationId;
|
||||
};
|
||||
|
||||
struct RenameFile
|
||||
{
|
||||
std::string kind{"rename"};
|
||||
DocumentUri oldUri;
|
||||
DocumentUri newUri;
|
||||
std::optional<RenameFileOptions> options;
|
||||
std::optional<ChangeAnnotationIdentifier> annotationId;
|
||||
};
|
||||
|
||||
struct DeleteFileOptions
|
||||
{
|
||||
std::optional<bool> recursive;
|
||||
std::optional<bool> ignoreIfNotExists;
|
||||
};
|
||||
|
||||
struct DeleteFile
|
||||
{
|
||||
std::string kind{"delete"};
|
||||
DocumentUri uri;
|
||||
std::optional<DeleteFileOptions> options;
|
||||
std::optional<ChangeAnnotationIdentifier> annotationId;
|
||||
};
|
||||
|
||||
struct ChangeAnnotation
|
||||
{
|
||||
std::string label;
|
||||
bool needsConfirmation;
|
||||
std::optional<std::string> description;
|
||||
};
|
||||
|
||||
struct WorkspaceEdit
|
||||
{
|
||||
// { [uri: DocumentUri]: TextEdit[]; };
|
||||
std::optional<std::map<DocumentUri, std::vector<TextEdit>>> changes;
|
||||
// ( TextDocumentEdit[] | (TextDocumentEdit | CreateFile | RenameFile | DeleteFile)[]);
|
||||
std::optional<std::any> documentChanges;
|
||||
std::optional<std::map<std::string, ChangeAnnotation>> changeAnnotations;
|
||||
};
|
||||
}
|
||||
} // newlsp
|
||||
#endif // NEWPROTOCOL_H
|
||||
|
|
|
|||
|
|
@ -303,8 +303,8 @@ QJsonObject initialize(const QString &workspaceFolder, const QString &language,
|
|||
|
||||
} else if (language == JAVA) {
|
||||
|
||||
using namespace lsp::Lifecycle;
|
||||
using namespace lsp::Lifecycle::Initialize;
|
||||
using namespace newlsp::Lifecycle;
|
||||
using namespace newlsp::Lifecycle::Initialize;
|
||||
|
||||
std::string workspaceFolderUriStr = QUrl::fromLocalFile(workspaceFolder).toString().toStdString();
|
||||
std::string workspaceNameStr = QFileInfo(workspaceFolder).fileName().toStdString();
|
||||
|
|
|
|||
|
|
@ -368,8 +368,6 @@ struct RenameChange : public TextDocumentIdentifier
|
|||
AdditionalTextEdits edits;
|
||||
};
|
||||
|
||||
struct RenameChanges : public QList<RenameChange>{};
|
||||
|
||||
struct References : public Locations{};
|
||||
|
||||
namespace new_initialize{
|
||||
|
|
|
|||
|
|
@ -240,7 +240,7 @@ inline bool StyleLsp::isCharSymbol(const char ch) {
|
|||
|| (ch >= 0x5B && ch < 0x60 + 1) || (ch >= 0x7B && ch < 0x7E + 1);
|
||||
}
|
||||
|
||||
Sci_Position StyleLsp::getSciPosition(sptr_t doc, const lsp::Position &pos)
|
||||
Sci_Position StyleLsp::getSciPosition(sptr_t doc, const newlsp::Position &pos)
|
||||
{
|
||||
auto docTemp = (Scintilla::Internal::Document*)(doc);
|
||||
return docTemp->GetRelativePosition(docTemp->LineStart(pos.line), pos.character);
|
||||
|
|
@ -250,7 +250,7 @@ lsp::Position StyleLsp::getLspPosition(sptr_t doc, sptr_t sciPosition)
|
|||
{
|
||||
auto docTemp = (Scintilla::Internal::Document*)(doc);
|
||||
int line = docTemp->LineFromPosition(sciPosition);
|
||||
Sci_Position lineChStartPos = getSciPosition(doc, lsp::Position{line, 0});
|
||||
Sci_Position lineChStartPos = getSciPosition(doc, newlsp::Position{line, 0});
|
||||
return lsp::Position{line, (int)(sciPosition - lineChStartPos)};
|
||||
}
|
||||
|
||||
|
|
@ -276,7 +276,12 @@ StyleLsp::StyleLsp(TextEdit *parent)
|
|||
QObject::connect(&d->renamePopup, &RenamePopup::editingFinished, this, &StyleLsp::renameRequest, Qt::UniqueConnection);
|
||||
QObject::connect(RefactorWidget::instance(), &RefactorWidget::doubleClicked,
|
||||
this, [=](const QString &filePath, const lsp::Range &range){
|
||||
TextEditTabWidget::instance()->jumpToRange(filePath, range);
|
||||
newlsp::Range newRange;
|
||||
newRange.start.line = range.start.line;
|
||||
newRange.start.character = range.start.character;
|
||||
newRange.end.line = range.end.line;
|
||||
newRange.end.character = range.end.character;
|
||||
TextEditTabWidget::instance()->jumpToRange(filePath, newRange);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -706,8 +711,10 @@ void StyleLsp::setDiagnostics(const lsp::DiagnosticsParams ¶ms)
|
|||
this->cleanDiagnostics();
|
||||
for (auto val : params.diagnostics) {
|
||||
if (val.severity == lsp::Diagnostic::Severity::Error) { // error
|
||||
Sci_Position startPos = getSciPosition(d->edit->docPointer(), val.range.start);
|
||||
Sci_Position endPos = getSciPosition(d->edit->docPointer(), val.range.end);
|
||||
newlsp::Position start{val.range.start.line, val.range.start.character};
|
||||
newlsp::Position end{val.range.end.line, val.range.start.character};
|
||||
Sci_Position startPos = getSciPosition(d->edit->docPointer(), start);
|
||||
Sci_Position endPos = getSciPosition(d->edit->docPointer(), end);
|
||||
d->edit->setIndicatorCurrent(INDIC_SQUIGGLE);
|
||||
d->edit->indicSetFore(INDIC_SQUIGGLE, StyleColor::color(StyleColor::Table::get()->Red));
|
||||
d->edit->indicatorFillRange(startPos, endPos - startPos);
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ public:
|
|||
RedTextFore = 63,
|
||||
};
|
||||
|
||||
static Sci_Position getSciPosition(sptr_t doc, const lsp::Position &pos);
|
||||
static Sci_Position getSciPosition(sptr_t doc, const newlsp::Position &pos);
|
||||
static lsp::Position getLspPosition(sptr_t doc, sptr_t sciPosition);
|
||||
static int getLspCharacter(sptr_t doc, sptr_t sciPosition);
|
||||
static bool isCharSymbol(const char ch);
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ void TextEditTabWidget::openFile(const Head &head, const QString &filePath)
|
|||
lsp::Client *client = lsp::ClientManager::instance()->get(head);
|
||||
|
||||
// 全局rename操作
|
||||
QObject::connect(client, QOverload<const lsp::RenameChanges&>::of(&lsp::Client::requestResult),
|
||||
QObject::connect(client, QOverload<const newlsp::Workspace::WorkspaceEdit&>::of(&lsp::Client::requestResult),
|
||||
this, &TextEditTabWidget::doRenameReplace, Qt::UniqueConnection);
|
||||
|
||||
// 使用取出适用的编辑器
|
||||
|
|
@ -240,7 +240,7 @@ void TextEditTabWidget::jumpToLine(const QString &filePath, int line)
|
|||
}
|
||||
}
|
||||
|
||||
void TextEditTabWidget::jumpToRange(const QString &filePath, const lsp::Range &range)
|
||||
void TextEditTabWidget::jumpToRange(const QString &filePath, const newlsp::Range &range)
|
||||
{
|
||||
auto edit = switchFileAndToOpen(filePath);
|
||||
|
||||
|
|
@ -278,7 +278,7 @@ void TextEditTabWidget::debugPointClean()
|
|||
}
|
||||
}
|
||||
|
||||
void TextEditTabWidget::replaceRange(const QString &filePath, const lsp::Range &range, const QString &text)
|
||||
void TextEditTabWidget::replaceRange(const QString &filePath, const newlsp::Range &range, const QString &text)
|
||||
{
|
||||
auto edit = d->textEdits.value(filePath);
|
||||
if (edit) {
|
||||
|
|
@ -471,12 +471,32 @@ void TextEditTabWidget::handleDeletedFile(const QString &file)
|
|||
}
|
||||
}
|
||||
|
||||
void TextEditTabWidget::doRenameReplace(const lsp::RenameChanges &changes)
|
||||
void TextEditTabWidget::doRenameReplace(const newlsp::Workspace::WorkspaceEdit &renameResult)
|
||||
{
|
||||
for (auto change : changes) {
|
||||
QString filePath = change.documentUri.toLocalFile();
|
||||
for (auto edit : change.edits) {
|
||||
replaceRange(filePath, edit.range, edit.newText);
|
||||
if (renameResult.changes) {
|
||||
auto changes = renameResult.changes;
|
||||
auto itera = changes->begin();
|
||||
while (itera != changes->end()) {
|
||||
for (auto edit : itera->second) {
|
||||
QString filePath = QUrl(QString::fromStdString(itera->first)).toLocalFile();
|
||||
QString newText = QString::fromStdString(edit.newText);
|
||||
replaceRange(filePath, edit.range, newText);
|
||||
}
|
||||
itera ++;
|
||||
}
|
||||
}
|
||||
if (renameResult.documentChanges) {
|
||||
std::any documentChangesAny = renameResult.documentChanges.value();
|
||||
if (newlsp::any_contrast<std::vector<newlsp::TextDocumentEdit>>(documentChangesAny)) {
|
||||
auto documentChanges = std::any_cast<std::vector<newlsp::TextDocumentEdit>>(documentChangesAny);
|
||||
for (auto documentChange : documentChanges) {
|
||||
QString filePath = QUrl(QString::fromStdString(documentChange.textDocument.uri)).toLocalFile();
|
||||
std::vector<newlsp::AnnotatedTextEdit> edits = documentChange.edits;
|
||||
for (auto edit : edits) {
|
||||
QString newText = QString::fromStdString(edit.newText);
|
||||
replaceRange(filePath, edit.range, newText);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,11 +43,11 @@ public slots:
|
|||
void closeFile(const QString &filePath);
|
||||
void jumpToLine(const Head &head, const QString &filePath, int line);
|
||||
void jumpToLine(const QString &filePath, int line);
|
||||
void jumpToRange(const QString &filePath, const lsp::Range &range);
|
||||
void jumpToRange(const QString &filePath, const newlsp::Range &range);
|
||||
void runningToLine(const QString &filePath, int line);
|
||||
void runningEnd();
|
||||
void debugPointClean();
|
||||
void replaceRange(const QString &filePath, const lsp::Range &range,const QString &text);
|
||||
void replaceRange(const QString &filePath, const newlsp::Range &range,const QString &text);
|
||||
|
||||
private slots:
|
||||
void setDefaultFileEdit();
|
||||
|
|
@ -61,7 +61,7 @@ private slots:
|
|||
void fileModifyed(const QString &file);
|
||||
void fileDeleted(const QString &file);
|
||||
void fileMoved(const QString &file);
|
||||
void doRenameReplace(const lsp::RenameChanges &changes);
|
||||
void doRenameReplace(const newlsp::Workspace::WorkspaceEdit &renameResult);
|
||||
TextEdit *switchFileAndToOpen(const Head &head, const QString &filePath);
|
||||
TextEdit *switchFileAndToOpen(const QString &filePath);
|
||||
void saveEditFile(const QString &file);
|
||||
|
|
|
|||
|
|
@ -139,20 +139,17 @@ CodePortingManager::CodePortingManager(QObject *parent)
|
|||
CodePortingManager::~CodePortingManager()
|
||||
{
|
||||
if (cfgWidget) {
|
||||
// delete cfgWidget;
|
||||
// TODO: luzhen, mainwindow double free
|
||||
// delete cfgWidget; mainwindow released
|
||||
cfgWidget = nullptr;
|
||||
}
|
||||
|
||||
if (outputPane) {
|
||||
// delete outputPane;
|
||||
// TODO: luzhen, mainwindow double free
|
||||
// delete outputPane; mainwindow released
|
||||
outputPane = nullptr;
|
||||
}
|
||||
|
||||
if (reportPane) {
|
||||
// delete reportPane;
|
||||
// TODO: luzhen, mainwindow double free
|
||||
// delete reportPane; mainwindow released
|
||||
reportPane = nullptr;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,9 +99,9 @@ SymbolCppGenerator::~SymbolCppGenerator()
|
|||
if (threadPoll) {
|
||||
threadPoll->clear();
|
||||
SymbolCppAsynParser::setGlobalRunFlags(false);
|
||||
while (threadPoll->activeThreadCount() != 0) {
|
||||
threadPoll->waitForDone(100);
|
||||
}
|
||||
// while (threadPoll->activeThreadCount() != 0) {
|
||||
// threadPoll->waitForDone(100);
|
||||
// }
|
||||
delete thread();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,9 +26,9 @@
|
|||
#include <QDirIterator>
|
||||
#include <QMimeDatabase>
|
||||
|
||||
#define JDTLS_PACKAGE_URL "https://download.eclipse.org/jdtls/snapshots/jdt-language-server-1.10.0-202203040350.tar.gz"
|
||||
#define JDTLS_PACKAGE_URL "https://download.eclipse.org/jdtls/snapshots/jdt-language-server-1.11.0-202205051421.tar.gz"
|
||||
#define JDTLS_PACKAGE_NAME "jdt-language-server.tar.gz"
|
||||
#define JDTLS_CHECKFILE_URL "https://download.eclipse.org/jdtls/snapshots/jdt-language-server-1.10.0-202203040350.tar.gz.sha256"
|
||||
#define JDTLS_CHECKFILE_URL "https://download.eclipse.org/jdtls/snapshots/jdt-language-server-1.11.0-202205051421.tar.gz.sha256"
|
||||
#define JDTLS_CHECKFILE_NAME "jdt-language-server.tar.gz.sha256"
|
||||
#define JDTLS_CHECKPROGRAM_NAME "shasum"
|
||||
#define JDTLS_CHECKPROGRAM_MODE "256"
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@
|
|||
#include "backend.h"
|
||||
|
||||
#include <QProcess>
|
||||
#include <QJsonObject>
|
||||
#include <QJsonDocument>
|
||||
#include <QRegularExpression>
|
||||
|
||||
struct BackendPrivate
|
||||
{
|
||||
|
|
@ -67,12 +70,6 @@ Backend::~Backend()
|
|||
}
|
||||
}
|
||||
|
||||
QByteArray Backend::readAndWait()
|
||||
{
|
||||
d->backendIns->waitForReadyRead(-1);
|
||||
return d->backendIns->readAll();
|
||||
}
|
||||
|
||||
void Backend::writeAndWait(const QByteArray &data)
|
||||
{
|
||||
if (!d->backendIns)
|
||||
|
|
@ -81,6 +78,44 @@ void Backend::writeAndWait(const QByteArray &data)
|
|||
d->backendIns->waitForBytesWritten(-1);
|
||||
}
|
||||
|
||||
bool Backend::readAndWait(QVector<QJsonObject> &jsonObjs, QByteArray &source)
|
||||
{
|
||||
int waitCount = 0;
|
||||
qInfo() << "waitForReadyRead";
|
||||
while(d->backendIns->waitForReadyRead(100)) {
|
||||
if ( 3 == waitCount ++) {
|
||||
qCritical() << "wait timeOut";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
QRegularExpression regExp("^Content-Length:\\s+(\\d+)\\r\\n\\r\\n");
|
||||
QByteArray head, jsonSrc;
|
||||
while (d->backendIns->bytesAvailable()) {
|
||||
head += d->backendIns->read(1);
|
||||
auto matchs = regExp.match(head);
|
||||
if (matchs.hasMatch()) {
|
||||
int jsonObjSize = matchs.captured(1).toInt();
|
||||
while (jsonSrc.size() != jsonObjSize) {
|
||||
QByteArray readChar = d->backendIns->read(1);
|
||||
if (readChar.isEmpty()) {
|
||||
qInfo() << "readChar wait";
|
||||
d->backendIns->waitForReadyRead(1);
|
||||
} else {
|
||||
jsonSrc += readChar;
|
||||
}
|
||||
}
|
||||
QJsonObject jsonObj = QJsonDocument::fromJson(jsonSrc).object();
|
||||
qInfo() << "read jsonobject:\n" << jsonObj;
|
||||
jsonObjs.append(jsonObj);
|
||||
source += head += jsonSrc;
|
||||
head.clear();
|
||||
jsonSrc.clear();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
SettingInfo Backend::info() const
|
||||
{
|
||||
return d->saveInfo;
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public:
|
|||
explicit Backend(const SettingInfo &info);
|
||||
virtual ~Backend();
|
||||
void writeAndWait(const QByteArray &data);
|
||||
QByteArray readAndWait();
|
||||
bool readAndWait(QVector<QJsonObject> &jsonObjs, QByteArray &source);
|
||||
SettingInfo info() const;
|
||||
bool canRead();
|
||||
signals:
|
||||
|
|
|
|||
|
|
@ -56,9 +56,6 @@ bool Route::saveBackend(const Route::Head &head, Backend *backend)
|
|||
}
|
||||
|
||||
backends.insert(head, backend);
|
||||
QObject::connect(backend, &Backend::aboutToClose, [=](){
|
||||
backends.key(backend);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
#include <QtAlgorithms>
|
||||
#include <QRunnable>
|
||||
#include <QtConcurrent>
|
||||
#include <QRegularExpression>
|
||||
|
||||
#include <iostream>
|
||||
namespace Private {
|
||||
|
|
@ -60,16 +61,22 @@ void ServerProxy::fromRequest(const Json::Value &request, Json::Value &response)
|
|||
}
|
||||
auto backend = Route::instance()->backend(head);
|
||||
if (backend) {
|
||||
// send to backend
|
||||
int id = orginJsonObject.value("id").toInt();
|
||||
auto requestData = orginList.join("\r\n\r\n").toLatin1();
|
||||
qInfo() << "-> to backend request\n" << requestData;
|
||||
backend->writeAndWait(requestData);
|
||||
qInfo() << "-> to backend request\n" << requestData;
|
||||
|
||||
while (backend->canRead() || !Private::readBuffer.contains("\"result\":")) {
|
||||
Private::readBuffer += backend->readAndWait();
|
||||
// recv backend and wait
|
||||
QVector<QJsonObject> retJsonObjs;
|
||||
while (!jsonObjsContainsId(retJsonObjs, id)) {
|
||||
backend->readAndWait(retJsonObjs, Private::readBuffer);
|
||||
}
|
||||
|
||||
//send data to frontend;
|
||||
response["data"] = Json::Value(Private::readBuffer.toStdString());
|
||||
Private::readBuffer.clear();
|
||||
qInfo() << "<-- front request result\n" << Private::readBuffer;
|
||||
Private::readBuffer.clear();
|
||||
} // can find backend main
|
||||
}
|
||||
|
||||
|
|
@ -90,29 +97,57 @@ void ServerProxy::fromNotify(const Json::Value &request)
|
|||
Route::Head head{workspace, language};
|
||||
auto backend = Route::instance()->backend(head);
|
||||
if (backend) {
|
||||
auto requestData = orginList.join("\r\n\r\n").toLatin1();
|
||||
qInfo() << "-> to backend notify\n" << requestData;
|
||||
backend->writeAndWait(requestData);
|
||||
|
||||
QString methodName = orginJsonObject.value("method").toString();
|
||||
if ( methodName == "textDocument/didOpen"
|
||||
|| methodName == "textDocument/didChange") {
|
||||
while (backend->canRead() ||
|
||||
!Private::readBuffer.contains("\"method\":\"textDocument/publishDiagnostics\"")) {
|
||||
Private::readBuffer += backend->readAndWait();
|
||||
// send to backend
|
||||
auto requestData = orginList.join("\r\n\r\n").toLatin1();
|
||||
backend->writeAndWait(requestData);
|
||||
qInfo() << "-> to backend notify\n" << requestData;
|
||||
|
||||
// recv wait from backend
|
||||
if (jsonObjContainsMethod(orginJsonObject, "textDocument/didOpen")
|
||||
|| jsonObjContainsMethod(orginJsonObject, "textDocument/didChange")) {
|
||||
QVector<QJsonObject> retJsonObjs;
|
||||
while (!jsonObjsContainsMethod(retJsonObjs, "textDocument/publishDiagnostics")) {
|
||||
if (!backend->readAndWait(retJsonObjs, Private::readBuffer)) {
|
||||
if (Private::readBuffer.contains("\"method\":\"textDocument/publishDiagnostics\""))
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (jsonObjContainsMethod(orginJsonObject, "exit")) {
|
||||
Route::instance()->removeBackend(head);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool ServerProxy::jsonObjectIsResult(const QJsonObject &jsonObj)
|
||||
bool ServerProxy::jsonObjsContainsId(QVector<QJsonObject> &jsonObj, int id)
|
||||
{
|
||||
for (auto val : jsonObj) {
|
||||
if (val.value("id").toInt() == id)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ServerProxy::jsonObjsContainsMethod(QVector<QJsonObject> &jsonObjs, const QString &methedName)
|
||||
{
|
||||
for (auto val : jsonObjs) {
|
||||
if (val.value("method").toString() == methedName)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ServerProxy::jsonObjContainsMethod(const QJsonObject &jsonObj, const QString &methodName)
|
||||
{
|
||||
if (jsonObj.value("method").toString() == methodName)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ServerProxy::jsonObjIsResult(const QJsonObject &jsonObj)
|
||||
{
|
||||
auto keys = jsonObj.keys();
|
||||
return keys.contains("id") && keys.contains("result");
|
||||
}
|
||||
|
||||
bool ServerProxy::jsonObjectIsMethod(const QJsonObject &jsonObj)
|
||||
{
|
||||
auto keys = jsonObj.keys();
|
||||
return keys.contains("method");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,9 +32,10 @@ public:
|
|||
void fromRequest(const Json::Value &request, Json::Value &response);
|
||||
void fromNotify(const Json::Value &request);
|
||||
private:
|
||||
bool tryCastJsonObject(const QByteArray &array, QJsonObject &jsonObj);
|
||||
bool jsonObjectIsResult(const QJsonObject &jsonObj);
|
||||
bool jsonObjectIsMethod(const QJsonObject &jsonObj);
|
||||
bool jsonObjsContainsId(QVector<QJsonObject> &jsonObjs, int id);
|
||||
bool jsonObjsContainsMethod(QVector<QJsonObject> &jsonObjs, const QString &methedName);
|
||||
bool jsonObjContainsMethod(const QJsonObject &jsonObj, const QString &methodName);
|
||||
bool jsonObjIsResult(const QJsonObject &jsonObj);
|
||||
};
|
||||
|
||||
#endif // SERVERPROXY_H
|
||||
|
|
|
|||
Loading…
Reference in New Issue