1.1 KiB
1.1 KiB
Design of clice
Server
clice is a language server, which is also a kind of server. It uses libuv as the event library and follows the common event-driven model. The main thread handles requests and distributes tasks, while the thread pool executes the actual tasks. Related code is located in the Server directory. It generally is responsible for the following tasks:
- communicate with the client
- initialize the server
- distrubute tasks to the thread pool
- manage all opened files
Protocol
describe the LSP specification with C++ struct definition.
AST
The main focus is to encapsulate some compiler interfaces of Clang.
- build preamble
- build AST
- capture macros
- capture diagnostics
- resolve template
- implement
SelectionTree
TODO: add more details
Index
mainly about how to build index and how to use it.
TODO: add more details
Feature
specific LSP feature implementations.
Support
some useful utilities.