Skip to content

Commit f8cff8c

Browse files
committed
修复代码补全未出现的问题
1 parent ce18409 commit f8cff8c

File tree

6 files changed

+31
-7
lines changed

6 files changed

+31
-7
lines changed

CodeFormatServer/src/LanguageService.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ std::shared_ptr<vscode::InitializeResult> LanguageService::OnInitialize(std::sha
8080

8181
result->capabilities.completionProvider.resolveProvider = false;
8282
result->capabilities.completionProvider.triggerCharacters = {};
83+
result->capabilities.completionProvider.completionItem.labelDetailsSupport = true;
8384

8485
auto& editorConfigFiles = param->initializationOptions.editorConfigFiles;
8586
for (auto& configFile : editorConfigFiles)

CodeFormatServer/src/Service/CompletionService.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ std::shared_ptr<LuaAstNode> CompletionService::FindAstFromPosition(vscode::Posit
5757
{
5858
auto ast = parser->GetAst();
5959
auto luaFile = parser->GetLuaFile();
60-
auto offset = luaFile->GetOffsetFromPosition(position.line, position.character);
60+
auto offset = luaFile->GetOffsetFromPosition(position.line, position.character > 0 ? position.character - 1 : 0);
6161

6262
auto textOffset = TextRange(offset, offset);
6363
while (true)

CodeFormatServer/src/Service/ModuleService.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ std::vector<vscode::CompletionItem> ModuleService::GetModuleCompletions(std::sha
254254
command.command = "emmylua.import.me";
255255
command.arguments.push_back(uri);
256256
command.arguments.push_back(insertRange.Serialize());
257-
257+
vscode::CompletionItemLabelDetails labelDetails;
258258
if (pair.second.size() == 1)
259259
{
260260
auto& luaModule = pair.second.front();
@@ -265,6 +265,8 @@ std::vector<vscode::CompletionItem> ModuleService::GetModuleCompletions(std::sha
265265
object["path"] = luaModule->FilePath;
266266
object["name"] = name;
267267
command.arguments.push_back(object);
268+
labelDetails.detail = format("[{}]", luaModule->ModuleName);
269+
labelDetails.description = format("[{}]", luaModule->ModuleName);
268270
}
269271
else
270272
{
@@ -277,8 +279,11 @@ std::vector<vscode::CompletionItem> ModuleService::GetModuleCompletions(std::sha
277279
object["name"] = name;
278280
command.arguments.push_back(object);
279281
}
282+
labelDetails.detail = format("[{}]", completion.detail);
283+
labelDetails.description = format("[{}]", completion.detail);
280284
}
281285
completion.command = command;
286+
completion.labelDetails = labelDetails;
282287
}
283288

284289
return result;

CodeFormatServer/src/Session/IOSession.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,15 @@ std::string IOSession::Handle(std::shared_ptr<ProtocolParser> parser)
4343
{
4444
auto start = chrono::system_clock::now();
4545
auto result = _service.Dispatch(parser->GetMethod(), params);
46+
std::cerr << format("request {}, it cost: {}ms\n", parser->GetMethod(),
47+
chrono::duration_cast<chrono::milliseconds>(
48+
chrono::system_clock::now() - start
49+
).count());
4650
if (result)
4751
{
4852
return parser->SerializeProtocol(result);
4953
}
50-
// std::cerr << format("request {}, it cost: {}ms\n", parser->GetMethod(),
51-
// chrono::duration_cast<chrono::milliseconds>(
52-
// chrono::system_clock::now() - start
53-
// ).count());
54+
5455
}
5556
}
5657
catch (std::exception& e)

CodeFormatServer/src/VSCode.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,12 +343,20 @@ nlohmann::json vscode::ExecuteCommandOptions::Serialize()
343343
return object;
344344
}
345345

346+
nlohmann::json vscode::CompletionItemOptions::Serialize()
347+
{
348+
auto object = nlohmann::json::object();
349+
350+
object["labelDetailsSupport"] = labelDetailsSupport;
351+
return object;
352+
}
353+
346354
nlohmann::json vscode::CompletionOptions::Serialize()
347355
{
348356
auto object = nlohmann::json::object();
349357
object["triggerCharacters"] = SerializeArray(triggerCharacters);
350358
object["resolveProvider"] = resolveProvider;
351-
359+
object["completionItem"] = completionItem.Serialize();
352360
return object;
353361
}
354362

include/CodeFormatServer/VSCode.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,11 +206,20 @@ class ExecuteCommandOptions : public Serializable
206206
nlohmann::json Serialize() override;
207207
};
208208

209+
class CompletionItemOptions : public Serializable
210+
{
211+
public:
212+
bool labelDetailsSupport = true;
213+
214+
nlohmann::json Serialize() override;
215+
};
216+
209217
class CompletionOptions : public Serializable
210218
{
211219
public:
212220
std::vector<std::string> triggerCharacters;
213221
bool resolveProvider;
222+
CompletionItemOptions completionItem;
214223

215224
nlohmann::json Serialize() override;
216225
};

0 commit comments

Comments
 (0)