用于语言服务器协议(LSP)的Python客户端库

wgeznvg7  于 2023-11-16  发布在  Python
关注(0)|答案(2)|浏览(206)

我需要与实现语言服务器协议(LSP)的语言服务器(Eclipse JDT LS)进行交互,并且我需要它用于Python项目,该项目将用于分析从Java开始的不同编程语言。
我一直在寻找一个适合我的Python客户端库,有什么建议吗?
如果这很容易,我不介意写一个,但我觉得世界不需要另一个图书馆,如果一个好的已经存在。

nbysray5

nbysray51#

我发现,截至2023年7月,有一个名为pygls(https://github.com/openlawlibrary/pygls)的库目前正在为语言服务器协议(LSP)开发一个可用的客户端。
在我们等待第一个正式版本的时候,我已经将它包含在我的setup.py文件中的“install_requires”下。这确保了它将在我的项目安装过程中自动安装。下面是我如何修改该文件的:

install_requires=[
    'pygls @ git+https://github.com/openlawlibrary/pygls.git'
]

字符串
通过这行代码,pygls将直接从GitHub存储库中获取并安装到您的环境中。

gpnt7bae

gpnt7bae2#

我是multilspy的作者,multilspy是Python中的LSP客户端,具有库接口,旨在用于围绕语言服务器构建应用程序。它处理不同语言服务器的配置和初始化,并提供简单的接口。它目前支持运行Eclipse JDT.LS for Javarust-analyzer for RustOmniSharp for C#jedi-language-server for Python。您可以通过运行pip来安装它:

pip install https://github.com/microsoft/monitors4codegen/archive/main.zip

字符串
multilspy的用法:

from monitors4codegen.multilspy import SyncLanguageServer
from monitors4codegen.multilspy.multilspy_config import MultilspyConfig
from monitors4codegen.multilspy.multilspy_logger import MultilspyLogger
...
config = MultilspyConfig.from_dict({"code_language": "java"}) # Also supports "python", "rust", "csharp"
logger = MultilspyLogger()
lsp = SyncLanguageServer.create(config, logger, "/abs/path/to/project/root/")
with lsp.start_server():
    result = lsp.request_definition(
        "relative/path/to/code_file.java", # Filename of location where request is being made
        163, # line number of symbol for which request is being made
        4 # column number of symbol for which request is being made
    )
    result2 = lsp.request_completions(
        ...
    )
    result3 = lsp.request_references(
        ...
    )
    ...

相关问题