|Did you know ...||Search Documentation:|
|Pack prolog_lsp -- README.md|
An implementation of the Language Server Protocol written in Prolog to support a language server for Prolog applications.
This is written for SWI-Prolog, and employs predicates specific to that implementation.
There are 2 implementations within this package:
stdio- it reads request from
stdinand writes responses out to
stdout, with logging and diagnostics on
stderr. Eventually, this would be the backend for IDE or editors plugins (e.g., in VS Code).
tcp- it creates a server on the specified port and listens for new connections, handling requests and responses on each connection in separate threads. To load using the SWI-Prolog manager and download the latest tagged version, in a SWI-Prolog console type:
To load from a locally cloned copy of this repository:
Once installed, running the following lines will start a
stdio language server in the same process as the SWI-Prolog console. Note that this call will not return until the server exits, a signal is fired, or Ctrl-C is hit.
Similar to the
stdio server, these lines will run the TCP server locally on the specified port. Note that this call will return once the server starts in a separate threads, so it becomes possible to interact with the server in the same process. The port in this example is 3101, but the choice is arbitrary and can be available port number.
For development, the easiest path may be to clone the git repository, then run either the explicit local package installation above, or use the
test.pl to both load the package and run its unit tests.
This project is very immature and not at all recommended for daily production use. Happy to discuss contributions!