标签: language-server-protocol

LSP客户端编写指南

我有一个个人编辑器,它实现了自己的代码完成“协议”,并且想切换到语言服务器协议以减轻自己的一些开发负担。然而我还不能完全理解有关客户端实现的LSP 文档。它与服务器实现混合在一起,无法找到两者之间明显的区别。

许多在线文档(包括有关 SO 的问题)都是围绕 VSCode 扩展展开的,我对这些扩展的了解为零并且没有帮助。

如果您能帮助我开始编写一个仅查询自动完成功能的简单客户端,我将不胜感激。我用 C++ 编写编辑器,并且非常感谢任何解释如何创建客户端的教程。我可以理解 Python、C、C#、Pure JavaScript、C++、PHP 和类似语言,因此我可以轻松遵循这些语言的任何教程。

如果有任何不清楚的地方,请告诉我,以便我进行解释(这是我在 LSP 中的第一篇文章:))

language-server-protocol

8
推荐指数
1
解决办法
6190
查看次数

VSCode中具有语义高亮的语言服务器

我想VSCode用语义高亮支持编写语言服务器.我使用的语言有非常复杂的规则,所以我不想依赖于标记器来区分标识符和关键字.

我已经有了语言服务VS Community,在那里我编写了自己的分类器.可以编写自己的分类器VSCode,或者只是将文档着色的方法是将TextMate语言规范文件添加到VScode包中吗?

syntax-highlighting visual-studio-code vscode-extensions language-server-protocol

7
推荐指数
1
解决办法
888
查看次数

Monaco 编辑器:突出显示 Python 中的语法错误

我想在浏览器中突出显示 Python 语法错误。

我发现Python有LSP实现摩纳哥编辑器有LSP客户端

有什么方法可以将它们连接在一起吗?

python monaco-editor language-server-protocol

7
推荐指数
1
解决办法
3038
查看次数

如何在 Neovim 中使用 Python 的语言服务器协议

我花了很多时间弄清楚如何在 neovim 中使用 Python (3) 的语言服务器协议 (LSP)。主要是我在寻找 Python 3 的自动完成功能,它是像 PySide2 这样的模块。

遗憾的是,我无法让我的配置文件 (.config/vim/init.vim) 工作。我知道github上有很多。但是它们包含了如此多的附加功能,我还没有能够根据我的需要调整其中的一个。还有一些也已经过时了。

所以这是我迄今为止尝试过的:

www.langserver.org 有很长的语言客户端和服务器列表。

我为 Python 安装了 Palantirs 语言服务器协议(https://github.com/palantir/python-language-server):

pip3 install 'python-language-server[all]'
Run Code Online (Sandbox Code Playgroud)

在下一步中,我通过 vim-plug 为 neovim 安装了一个语言客户端。实际上我尝试了几个,但让我们坚持以 ale 为例(https://github.com/dense-analysis/ale):

call plug#begin('~/.local/share/nvim/plugged')
" Plugins:
Plug 'dense-analysis/ale'

" Initialize plugin system
call plug#end()
Run Code Online (Sandbox Code Playgroud)

并通过安装它 :PlugInstall

然后必须在加载 Ale 之前对自动完成功能进行设置:

" initialize before ale is loaded
let g:ale_completion_enabled = 1
Run Code Online (Sandbox Code Playgroud)

要与 Omnicompletion 一起使用,还需要另外一项设置:

set omnifunc=ale#completion#OmniFunc
Run Code Online (Sandbox Code Playgroud)

经过更多的谷歌搜索,我读到我必须注册语言服务器(https://vi.stackexchange.com/questions/20958/use-the-pyls-python-lsp-with-ale-on-neovim):

if executable('pyls')
    au User lsp_setup call lsp#register_server({
        \ …
Run Code Online (Sandbox Code Playgroud)

python neovim language-server-protocol

7
推荐指数
2
解决办法
5856
查看次数

Neovim 内置 LSP 显示没有可用于 Python 文件的代码操作

当我打开 python 文件时,诊断似乎工作正常。然后,我导航到出现诊断错误的行,按快捷方式调用代码操作(在我的例子中为“<space>ca”),然后收到一条消息“没有可用的代码操作”。我尝试运行它以解决不同的错误,例如以下错误:

b =1  #E225 missing whitespace around operator
from jinja2 import StrictUndefined  #'jinja2.StricUndefined' imported but unused
import jjj # import-error: Unable to import 'jjj'
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试了两个 LSP 服务器:pyright 和 pylsp,两者都给了我相同的“没有可用的代码操作”

我见过类似的问题,但 JavaScript在这里询问,它建议安装一个插件,但这对我不起作用。

neovim language-server-protocol pyright python-language-server nvim-lspconfig

7
推荐指数
1
解决办法
9385
查看次数

如何在 Neovim 中设置 Angular 语言服务

我目前的设置如下:

local cwd = vim.fn.getcwd()
local project_library_path = cwd .. "/node_modules"

local cmd = {
    DATA_PATH .. "/lsp_servers/angularls/node_modules/@angular/language-server/bin/ngserver",
    "--ngProbeLocations",
    project_library_path,
    "--tsProbeLocations",
    project_library_path ,
    "--stdio",
}

require'lspconfig'.angularls.setup{
    cmd = cmd,
    on_new_config = function(new_config, new_root_dir)
        new_config.cmd = cmd
    end
}

Run Code Online (Sandbox Code Playgroud)

在 上:LspInfo,我可以看到它cmd是可执行的,但不知何故它没有附加。

我很难@angular/language-server区分@angular/language-service...

我不确定 和 会做什么tsProbeLocations以及ngProbeLocations我的道路是否正确。

最后,我从Angular Language Service 网站上看到,neovim 没有一个好的指南。(除了coc-angular,但我不使用 coc。)

neovim angular language-server-protocol angular-language-service

7
推荐指数
2
解决办法
6779
查看次数

如何扩展现有的语言服务器?

我将创建一个与 javascript 非常相似的语言服务器。
有没有办法重用现有的 javascript 服务器来突出显示、自动完成、语法错误等?
我正在寻找的是扩展javascript语言服务器并提供额外的关键字、语法突出显示、自动完成等。

visual-studio-code vscode-extensions language-server-protocol

6
推荐指数
0
解决办法
732
查看次数

什么是 .clientrc 文件?

您可以在这里找到它的提及: https: //code.visualstudio.com/api/language-extensions/language-server-extension-guide ,但没有任何解释。我无法通过谷歌搜索找到有关它的信息。

文件的目的是什么.clientrc

node.js visual-studio-code vscode-extensions language-server-protocol

6
推荐指数
1
解决办法
633
查看次数

语言服务器是远程进程还是本地进程

许多 IDE 和插件都谈到提供一些 IDE 功能(例如自动完成、linting 和突出显示)的语言服务器。语言服务器只是在我的机器上运行的一些本地进程,还是我的代码被发送到某个地方进行分析(如果我没有互联网,功能会停止工作)。另外,如果代码被发送到某个地方,那怎么安全呢?

language-server-protocol python-language-server

6
推荐指数
1
解决办法
2567
查看次数

为什么“emacs-lisp”语言没有语言服务器协议?

为什么该语言没有语言服务器协议emacs-lisp?例如,lsp-modeEmacs 包包含对多种语言及其相关语言服务器的支持。但不是emacs-lisp

为什么会这样?

包裹也是如此eglot

emacs language-server-protocol

6
推荐指数
1
解决办法
969
查看次数