Files
clice/docs/design/architecture.md
2024-10-02 17:01:26 +08:00

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.