pygls (pronounced like "pie glass") is a pythonic generic implementation of the Language Server Protocol for use as a foundation for writing language servers using Python (e.g. Python, XML, etc.). It allows you to write your own language server in just a few lines of code.
IMPORTANT NOTE:
In order to support type-checking, we added
pydantic
library which requires passing keyword arguments when creating LSP models.
Here's how to create a server and register a code completion feature:
from pygls.capabilities import COMPLETION
from pygls.server import LanguageServer
from pygls.lsp import CompletionItem, CompletionList, CompletionOptions, CompletionParams
server = LanguageServer()
@server.feature(COMPLETION, CompletionOptions(trigger_characters=[',']))
def completions(params: CompletionParams):
"""Returns completion items."""
return CompletionList(
is_incomplete=False,
items=[
CompletionItem(label='"'),
CompletionItem(label='['),
CompletionItem(label=']'),
CompletionItem(label='{'),
CompletionItem(label='}'),
]
)
server.start_tcp('127.0.0.1', 8080)
Show completion list on the client:
The full documentation and a tutorial is available at https://pygls.readthedocs.io/en/latest/.
Submit a Pull Request (PR) with your information against the implementations document.
Apache-2.0
Your contributions to pygls are welcome! Please review the Contributing and Code of Conduct documents for how to get started.
Open Law Library is a 501(c)(3) tax exempt organization.Help us maintain our open source projects and open the law to all with a donation.