2020-05-15 13:41:26 +03:00
|
|
|
---
|
|
|
|
layout: section-summary
|
2020-05-20 14:21:52 +03:00
|
|
|
title: Language Server
|
2020-05-15 13:41:26 +03:00
|
|
|
category: language-server
|
|
|
|
tags: [language-server, readme]
|
|
|
|
order: 0
|
|
|
|
---
|
|
|
|
|
2020-05-20 14:21:52 +03:00
|
|
|
# Language Server
|
2020-07-21 15:59:40 +03:00
|
|
|
|
2020-04-14 19:00:51 +03:00
|
|
|
The Enso Language Server is responsible for providing language services to the
|
|
|
|
Enso IDE (and other clients). This mainly involves speaking the Enso protocol
|
|
|
|
and orchestrating the runtime in response to this. It is responsible for:
|
|
|
|
|
|
|
|
- **Introspection Services:** Giving clients the ability to observe information
|
|
|
|
about their running code including values, types, profiling information, and
|
|
|
|
debugging.
|
|
|
|
- **Code Execution:** The ability for clients to execute arbitrary Enso code in
|
2020-07-21 15:59:40 +03:00
|
|
|
arbitrary scopes. This can be used in conjunction with the above to provide a
|
|
|
|
REPL with an integrated debugger.
|
2020-04-14 19:00:51 +03:00
|
|
|
- **Code Completion:** Sophisticated completion functionality that refines
|
|
|
|
suggestions intelligently based on context.
|
|
|
|
- **Node Management:** Tracking and providing the language server's internal
|
|
|
|
node representation of the Enso program.
|
|
|
|
- **Code Analysis:** Analysis functionality for Enso code (e.g. find usages,
|
|
|
|
jump-to-definition, and so on).
|
|
|
|
- **Refactoring:** Refactoring functionality for Enso code (e.g. rename, move,
|
|
|
|
extract, and so on).
|
|
|
|
- **Type Interactions:** Features for type-driven-development that allow users
|
|
|
|
to interact with the types of their programs.
|
|
|
|
|
2020-05-15 13:41:26 +03:00
|
|
|
This folder contains all documentation pertaining to the Language Server, which
|
|
|
|
is broken up as follows:
|
|
|
|
|
|
|
|
- [**The Enso Protocol Architecture:**](./protocol-architecture.md) The
|
|
|
|
architecture of the Enso protocol.
|
|
|
|
|
|
|
|
The protocol messages are broken up into documents as follows:
|
2020-04-14 19:00:51 +03:00
|
|
|
|
2020-05-15 13:41:26 +03:00
|
|
|
- [**Common Message Specification:**](./protocol-common.md) The common messages
|
|
|
|
and types
|
|
|
|
- [**Project Manager Message Specification:**](./protocol-project-manager.md)
|
|
|
|
The messages and types pertaining to the project manager component.
|
|
|
|
- [**Language Server Message Specification:**](./protocol-language-server.md)
|
|
|
|
The messages and types pertaining to the language server component.
|