Skip to content

Commit de41014

Browse files
committed
测试C++20特性是否在git action可用
1 parent f027ca1 commit de41014

File tree

21 files changed

+431
-267
lines changed

21 files changed

+431
-267
lines changed

3rd/uriparser/src/config.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343

4444
#define PACKAGE_VERSION "0.9.5"
4545

46-
/* #undef HAVE_WPRINTF */
46+
#define HAVE_WPRINTF
4747
/* #undef HAVE_REALLOCARRAY */
4848

4949

CodeFormatServer/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,8 @@ target_sources(CodeFormatServer
3131
${CodeFormatServer_SOURCE_DIR}/src/CodeFormatServer.cpp
3232
${CodeFormatServer_SOURCE_DIR}/src/LanguageClient.cpp
3333
${CodeFormatServer_SOURCE_DIR}/src/LanguageService.cpp
34-
${CodeFormatServer_SOURCE_DIR}/src/FileManager.cpp
3534
${CodeFormatServer_SOURCE_DIR}/src/VirtualFile/VirtualFile.cpp
36-
${CodeFormatServer_SOURCE_DIR}/src/Indexs/ModuleIndex.cpp
35+
${CodeFormatServer_SOURCE_DIR}/src/Service/Indexs/ModuleIndex.cpp
3736
${CodeFormatServer_SOURCE_DIR}/src/Session/IOSession.cpp
3837
${CodeFormatServer_SOURCE_DIR}/src/Session/SocketIOSession.cpp
3938
${CodeFormatServer_SOURCE_DIR}/src/Session/StandardIOSession.cpp
@@ -45,8 +44,9 @@ target_sources(CodeFormatServer
4544
${CodeFormatServer_SOURCE_DIR}/src/VSCode.cpp
4645

4746
#service
47+
${CodeFormatServer_SOURCE_DIR}/src/Service/Service.cpp
4848
${CodeFormatServer_SOURCE_DIR}/src/Service/ModuleService.cpp
49-
49+
${CodeFormatServer_SOURCE_DIR}/src/Service/CodeFormatService.cpp
5050
# mimalloc
5151
${LuaCodeStyle_SOURCE_DIR}/3rd/mimalloc-2.0.3/src/static.c
5252
)

CodeFormatServer/src/FileManager.cpp

Lines changed: 0 additions & 135 deletions
This file was deleted.

CodeFormatServer/src/LanguageClient.cpp

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,32 @@
11
#include "CodeFormatServer/LanguageClient.h"
2-
2+
#include <iterator>
33
#include "CodeService/LuaEditorConfig.h"
44
#include "CodeService/LuaFormatter.h"
55
#include "LuaParser/LuaParser.h"
66
#include "Util/format.h"
77
#include "Util/Url.h"
88
#include "Util/FileFinder.h"
99

10+
#include "CodeFormatServer/Service/ModuleService.h"
11+
#include "CodeFormatServer/Service/CodeFormatService.h"
12+
13+
1014
LanguageClient& LanguageClient::GetInstance()
1115
{
12-
static LanguageClient instance;
13-
return instance;
16+
static auto instance = std::make_shared<LanguageClient>();
17+
return *instance;
1418
}
1519

1620
LanguageClient::LanguageClient()
1721
: _defaultOptions(std::make_shared<LuaCodeStyleOptions>()),
18-
_idCounter(0),
19-
_moduleIndex(std::make_shared<ModuleIndex>())
22+
_idCounter(0)
23+
{
24+
}
25+
26+
void LanguageClient::InitializeService()
2027
{
28+
AddService<CodeFormatService>();
29+
AddService<ModuleService>();
2130
}
2231

2332
void LanguageClient::SetSession(std::shared_ptr<IOSession> session)
@@ -91,11 +100,12 @@ void LanguageClient::DiagnosticFile(std::string_view uri)
91100
return;
92101
}
93102

103+
auto vscodeDiagnosis = std::make_shared<vscode::PublishDiagnosticsParams>();
104+
vscodeDiagnosis->uri = uri;
105+
94106
auto options = GetOptions(uri);
95107
if (!options->enable_check_codestyle)
96108
{
97-
auto vscodeDiagnosis = std::make_shared<vscode::PublishDiagnosticsParams>();
98-
vscodeDiagnosis->uri = uri;
99109
SendNotification("textDocument/publishDiagnostics", vscodeDiagnosis);
100110
return;
101111
}
@@ -107,29 +117,11 @@ void LanguageClient::DiagnosticFile(std::string_view uri)
107117
return;
108118
}
109119

110-
LuaFormatter formatter(parser, *options);
111-
formatter.BuildFormattedElement();
112-
113-
auto diagnosisInfos = formatter.GetDiagnosisInfos();
120+
auto formatDiagnostic = GetService<CodeFormatService>()->Diagnose(filename, parser, options);
121+
auto moduleDiagnosis = GetService<ModuleService>()->Diagnose(parser, options);
114122

115-
auto vscodeDiagnosis = std::make_shared<vscode::PublishDiagnosticsParams>();
116-
vscodeDiagnosis->uri = uri;
117-
118-
for (auto diagnosisInfo : diagnosisInfos)
119-
{
120-
auto& diagnosis = vscodeDiagnosis->diagnostics.emplace_back();
121-
diagnosis.message = diagnosisInfo.Message;
122-
diagnosis.range = vscode::Range(
123-
vscode::Position(
124-
diagnosisInfo.Range.Start.Line,
125-
diagnosisInfo.Range.Start.Character
126-
),
127-
vscode::Position(
128-
diagnosisInfo.Range.End.Line,
129-
diagnosisInfo.Range.End.Character
130-
));
131-
diagnosis.severity = vscode::DiagnosticSeverity::Warning;
132-
}
123+
std::copy(formatDiagnostic.begin(), formatDiagnostic.end(), std::back_inserter(vscodeDiagnosis->diagnostics));
124+
std::copy(moduleDiagnosis.begin(), moduleDiagnosis.end(), std::back_inserter(vscodeDiagnosis->diagnostics));
133125

134126
SendNotification("textDocument/publishDiagnostics", vscodeDiagnosis);
135127
}
@@ -228,7 +220,7 @@ void LanguageClient::UpdateAllDiagnosis()
228220

229221
finder.AddFindExtension(".lua");
230222

231-
_moduleIndex->ReBuildIndex(finder.FindFiles());
223+
GetService<ModuleService>()->RebuildIndexs(finder.FindFiles());
232224

233225
for (auto it : _fileMap)
234226
{

CodeFormatServer/src/LanguageService.cpp

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "CodeService/LuaCodeStyleOptions.h"
88
#include "CodeService/LuaFormatter.h"
99
#include "CodeFormatServer/LanguageClient.h"
10+
#include "CodeFormatServer/Service/CodeFormatService.h"
1011
#include "Util/Url.h"
1112

1213
using namespace std::placeholders;
@@ -48,6 +49,8 @@ std::shared_ptr<vscode::Serializable> LanguageService::Dispatch(std::string_view
4849

4950
std::shared_ptr<vscode::InitializeResult> LanguageService::OnInitialize(std::shared_ptr<vscode::InitializeParams> param)
5051
{
52+
LanguageClient::GetInstance().InitializeService();
53+
5154
auto result = std::make_shared<vscode::InitializeResult>();
5255

5356
result->capabilities.documentFormattingProvider = true;
@@ -160,11 +163,10 @@ std::shared_ptr<vscode::Serializable> LanguageService::OnFormatting(
160163
return result;
161164
}
162165

163-
LuaFormatter formatter(parser, *options);
164-
formatter.BuildFormattedElement();
166+
auto newText = LanguageClient::GetInstance().GetService<CodeFormatService>()->Format(parser, options);
165167

166168
auto& edit = result->edits.emplace_back();
167-
edit.newText = formatter.GetFormattedText();
169+
edit.newText = std::move(newText);
168170
edit.range = vscode::Range(
169171
vscode::Position(0, 0),
170172
vscode::Position(totalLine + 1, 0)
@@ -218,16 +220,15 @@ std::shared_ptr<vscode::Serializable> LanguageService::OnRangeFormatting(
218220
return result;
219221
}
220222

221-
auto& edit = result->edits.emplace_back();
222-
LuaFormatRange formattedRange(static_cast<int>(param->range.start.line), static_cast<int>(param->range.end.line));
223-
224-
LuaFormatter formatter(parser, *options);
225-
formatter.BuildRangeFormattedElement(formattedRange);
223+
LuaFormatRange formatRange(static_cast<int>(param->range.start.line), static_cast<int>(param->range.end.line));
224+
auto formatResult = LanguageClient::GetInstance().GetService<CodeFormatService>()->RangeFormat(
225+
formatRange, parser, options);
226226

227-
edit.newText = formatter.GetRangeFormattedText(formattedRange);
227+
auto& edit = result->edits.emplace_back();
228+
edit.newText = std::move(formatResult);
228229
edit.range = vscode::Range(
229-
vscode::Position(formattedRange.StartLine, formattedRange.StartCharacter),
230-
vscode::Position(formattedRange.EndLine + 1, formattedRange.EndCharacter)
230+
vscode::Position(formatRange.StartLine, formatRange.StartCharacter),
231+
vscode::Position(formatRange.EndLine + 1, formatRange.EndCharacter)
231232
);
232233
return result;
233234
}
@@ -253,13 +254,14 @@ std::shared_ptr<vscode::Serializable> LanguageService::OnTypeFormatting(
253254
return result;
254255
}
255256

256-
auto& edit = result->edits.emplace_back();
257+
257258
LuaFormatRange formattedRange(static_cast<int>(position.line) - 1, static_cast<int>(position.line) - 1);
258259

259-
LuaFormatter formatter(parser, *options);
260-
formatter.BuildRangeFormattedElement(formattedRange);
260+
auto formatResult = LanguageClient::GetInstance().GetService<CodeFormatService>()->RangeFormat(
261+
formattedRange, parser, options);
261262

262-
edit.newText = formatter.GetRangeFormattedText(formattedRange);
263+
auto& edit = result->edits.emplace_back();
264+
edit.newText = std::move(formatResult);
263265
edit.range = vscode::Range(
264266
vscode::Position(formattedRange.StartLine, formattedRange.StartCharacter),
265267
vscode::Position(formattedRange.EndLine + 1, formattedRange.EndCharacter)
@@ -269,17 +271,24 @@ std::shared_ptr<vscode::Serializable> LanguageService::OnTypeFormatting(
269271

270272
std::shared_ptr<vscode::CodeActionResult> LanguageService::OnCodeAction(std::shared_ptr<vscode::CodeActionParams> param)
271273
{
274+
auto range = param->range;
275+
auto uri = param->textDocument.uri;
276+
auto filePath = url::UrlToFilePath(uri);
272277
auto codeActionResult = std::make_shared<vscode::CodeActionResult>();
273278

274-
auto& action = codeActionResult->actions.emplace_back();
275-
std::string title = "reformat me";
276-
action.title = title;
277-
action.command.title = title;
278-
action.command.command = "emmylua.reformat.me";
279-
action.command.arguments.push_back(param->textDocument.uri);
280-
action.command.arguments.push_back(param->range.Serialize());
279+
if(LanguageClient::GetInstance().GetService<CodeFormatService>()->IsDiagnosticRange(filePath, range))
280+
{
281+
auto& action = codeActionResult->actions.emplace_back();
282+
std::string title = "reformat me";
283+
action.title = title;
284+
action.command.title = title;
285+
action.command.command = "emmylua.reformat.me";
286+
action.command.arguments.push_back(param->textDocument.uri);
287+
action.command.arguments.push_back(param->range.Serialize());
288+
289+
action.kind = vscode::CodeActionKind::QuickFix;
290+
}
281291

282-
action.kind = vscode::CodeActionKind::QuickFix;
283292
return codeActionResult;
284293
}
285294

@@ -316,10 +325,10 @@ std::shared_ptr<vscode::Serializable> LanguageService::OnExecuteCommand(
316325
auto& edit = change.emplace_back();
317326
LuaFormatRange formattedRange(static_cast<int>(range.start.line), static_cast<int>(range.end.line));
318327

319-
LuaFormatter formatter(parser, *options);
320-
formatter.BuildRangeFormattedElement(formattedRange);
328+
auto formatResult = LanguageClient::GetInstance().GetService<CodeFormatService>()->RangeFormat(formattedRange, parser, options);
329+
330+
edit.newText = std::move(formatResult);
321331

322-
edit.newText = formatter.GetRangeFormattedText(formattedRange);
323332
edit.range = vscode::Range(
324333
vscode::Position(formattedRange.StartLine, formattedRange.StartCharacter),
325334
vscode::Position(formattedRange.EndLine + 1, formattedRange.EndCharacter)

0 commit comments

Comments
 (0)