载入中...
搜索中...
未找到
LanguageServer.cpp
浏览该文件的文档.
1#include "cmdline.h"
2#include "common/config.h"
3
4#include <CLI11.hpp>
5
6#include <cstdio>
7#include <iostream>
8#include <string>
9
10#if defined(_WIN32)
11#include <fcntl.h>
12#include <io.h>
13#endif
14
15#if !defined(EVENGINE_ANDROID) && !defined(EVENGINE_IOS) && !defined(EVENGINE_WEBGPU)
17
18#include <filesystem>
19#endif
20
21namespace eve::cmd {
22
24 std::string root;
25
26 void setup(CLI::App& app, std::shared_ptr<CLI::Formatter> formatter) override {
27 auto command = app.add_subcommand("language-server", "Run the EveScript LSP server over stdio");
28 command->formatter(formatter);
29 command->add_option("-r,--root", root, "Project root used to resolve game:/ modules");
30 }
31
32 int parse(CLI::App& app, Cmdline& cmd) override {
33 auto command = app.get_subcommand("language-server");
34 return command->parsed() ? cmd.LanguageServer(root) : -1;
35 }
36};
37
39
40int Cmdline::LanguageServer(std::string path) {
41#if defined(EVENGINE_ANDROID) || defined(EVENGINE_IOS) || defined(EVENGINE_WEBGPU)
42 (void)path;
43 std::cerr << "eve language-server: desktop-only" << std::endl;
44 return 4;
45#else
46#if defined(_WIN32)
47 if (_setmode(_fileno(stdin), _O_BINARY) == -1 || _setmode(_fileno(stdout), _O_BINARY) == -1) {
48 std::cerr << "eve language-server: failed to configure binary stdio" << std::endl;
49 return 4;
50 }
51#endif
52 std::error_code error;
53 if (path.empty()) path = std::filesystem::current_path(error).string();
54 eve::dev::LanguageServer server(std::move(path));
55 return server.runStdio(std::cin, std::cout);
56#endif
57}
58
59} // namespace eve::cmd
std::string error
Definition Package.cpp:60
std::string path
Definition PlayHost.cpp:110
命令行模块(eve.cmd):run / build / package / test / zip / dev-server 等子命令入口。
Definition cmdline.h:33
int LanguageServer(std::string path)
EveScript Language Server Protocol stdio host (devtools LanguageServer).
In-process EveScript language service used by eve language-server and by unit tests....
int runStdio(std::istream &input, std::ostream &output)
Stdio LSP host. Returns 0 after a clean shutdown.
#define CMD_REG(name)
Definition cmdline.h:101
One eve <subcommand> handler: CLI setup + argument parsing.
Definition cmdline.h:23
int parse(CLI::App &app, Cmdline &cmd) override
Parses arguments and runs the command; returns the exit code.
void setup(CLI::App &app, std::shared_ptr< CLI::Formatter > formatter) override
Registers options on the CLI11 sub-app.