hoshi-lang dev
Yet another programming language
Loading...
Searching...
No Matches
server.h
Go to the documentation of this file.
1//
2// LSP Server — JSON-RPC transport and message dispatch
3//
4
5#ifndef HOSHI_LANG_LSP_SERVER_H
6#define HOSHI_LANG_LSP_SERVER_H
7
8#include <string>
9#include <share/json.hpp>
10#include "protocol.h"
11#include "document.h"
12#include "projectIndex.h"
14
15namespace lsp {
16
17class LspServer {
18public:
19 LspServer();
21 void run();
22
23private:
24 // ---- JSON-RPC I/O ----
25 std::string readMessage();
26 void writeMessage(const std::string &content);
27 void handleMessage(const json &msg);
28
29 void sendResponse(const json &id, const json &result);
30 void sendError(const json &id, int code, const std::string &message);
31 void sendNotification(const std::string &method, const json &params);
32
33 // ---- LSP Lifecycle ----
34 void handleInitialize(const json &id, const json &params);
35 void handleInitialized(const json &params);
36 void handleShutdown(const json &id);
37 void handleExit();
38
39 // ---- Document Sync ----
40 void handleDidOpen(const json &params);
41 void handleDidChange(const json &params);
42 void handleDidClose(const json &params);
43
44 // ---- Language Features ----
45 void handleCompletion(const json &id, const json &params);
46 void handleHover(const json &id, const json &params);
47 void handleDefinition(const json &id, const json &params);
48 void handleReferences(const json &id, const json &params);
49 void handleDocumentSymbol(const json &id, const json &params);
50
51 // ---- Diagnostics ----
52 void publishDiagnostics(const std::string &uri, int version);
53
54 // ---- State ----
57 std::shared_ptr<yoi::compilerContext> compilerCtx;
58 std::string workspaceRoot;
59 bool isInitialized = false;
60 bool compilerInitialized = false;
61 bool isShuttingDown = false;
62};
63
64} // namespace lsp
65
66#endif // HOSHI_LANG_LSP_SERVER_H
void handleDidOpen(const json &params)
Definition server.cpp:221
void writeMessage(const std::string &content)
Definition server.cpp:73
void handleShutdown(const json &id)
Definition server.cpp:205
DocumentStore documents
Definition server.h:55
bool isInitialized
Definition server.h:59
bool isShuttingDown
Definition server.h:61
bool compilerInitialized
Definition server.h:60
void handleDefinition(const json &id, const json &params)
Definition server.cpp:319
void handleExit()
Definition server.cpp:210
void handleDidChange(const json &params)
Definition server.cpp:228
void sendNotification(const std::string &method, const json &params)
Definition server.cpp:97
void sendResponse(const json &id, const json &result)
Definition server.cpp:79
void handleReferences(const json &id, const json &params)
Definition server.cpp:335
void handleDidClose(const json &params)
Definition server.cpp:238
std::string readMessage()
Definition server.cpp:44
std::string workspaceRoot
Definition server.h:58
void sendError(const json &id, int code, const std::string &message)
Definition server.cpp:88
std::shared_ptr< yoi::compilerContext > compilerCtx
Definition server.h:57
void handleHover(const json &id, const json &params)
Definition server.cpp:305
ProjectIndex projectIndex
Definition server.h:56
void handleMessage(const json &msg)
Definition server.cpp:110
void handleCompletion(const json &id, const json &params)
Definition server.cpp:295
void handleInitialize(const json &id, const json &params)
Definition server.cpp:152
void handleInitialized(const json &params)
Definition server.cpp:193
void handleDocumentSymbol(const json &id, const json &params)
Definition server.cpp:405
void publishDiagnostics(const std::string &uri, int version)
Definition server.cpp:252
nlohmann::json json
Definition protocol.h:15