跳转到主要内容

Vyper语言服务器,一种类似于Python的智能合约语言

项目描述

Vyper LSP服务器

需求

Vyper LSP需要至少0.3.7版本的vyper。为了全面支持,还需要确保虚拟环境中安装的vyper版本能够编译您的合约。

例如,带有#pragma version 0.3.8的vyper合约不能使用0.3.10编译,因此如果您想在使用此合约时获得全面支持,则必须安装vyper==0.3.8

带有#pragma version >=0.3.8的合约将能够与任何大于要求的vyper版本一起正常工作,因此如果您已安装最新的vyper版本,则可以在编辑此合约时获得全面支持。

安装Vyper-LSP

通过pipx

我喜欢pipx,因为它可以处理为可执行文件创建隔离环境并将它们添加到您的路径中。

pipx install git+https://github.com/vyperlang/vyper-lsp.git

通过pip

如果您通过其他方式管理环境,则可以使用pip进行安装

待办事项:发布到PyPI

pip install git+https://github.com/vyperlang/vyper-lsp.git

验证安装

检查vyper-lsp是否在您的路径中

在您的终端中运行which vyper-lsp。如果安装成功,您应该看到已安装的可执行文件路径。

编辑器设置

Emacs

以下Emacs Lisp片段将创建一个从Python模式派生的Vyper模式,并设置vyper-lsp。

(define-derived-mode vyper-mode python-mode "Vyper" "Major mode for editing Vyper.")

(add-to-list 'auto-mode-alist '("\\.vy\\'" . vyper-mode))

(with-eval-after-load 'lsp-mode
  (add-to-list 'lsp-language-id-configuration
               '(vyper-mode . "vyper"))
  (lsp-register-client
   (make-lsp-client :new-connection
                    (lsp-stdio-connection `(,(executable-find "vyper-lsp")))
                    :activation-fn (lsp-activate-on "vyper")
                    :server-id 'vyper-lsp)))

Neovim

将以下内容添加到您的 neovim lua 配置中。

它应该在 ~/.config/nvim/init.lua

vim.api.nvim_create_autocmd({ "BufEnter" }, {
  pattern = { "*.vy" },
  callback = function()
    vim.lsp.start({
      name = "vyper-lsp",
      cmd = { "vyper-lsp" },
      root_dir = vim.fs.dirname(vim.fs.find({ ".git" }, { upward = true })[1])
    })
  end,
})

vim.api.nvim_create_autocmd({ "BufEnter" }, {
  pattern = { "*.vy" },
  callback = function()
    vim.lsp.start({
      name = "vyper-lsp",
      cmd = { "vyper-lsp" },
      root_dir = vim.fs.dirname(vim.fs.find({ ".git" }, { upward = true })[1])
    })
  end,
})

vim.api.nvim_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', 'gr', '<Cmd>lua vim.lsp.buf.references()<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', 'gi', '<Cmd>lua vim.lsp.buf.implementation()<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<C-k>', '<Cmd>lua vim.lsp.buf.signature_help()<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '[d', '<Cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', ']d', '<Cmd>lua vim.lsp.diagnostic.goto_next()<CR>', { noremap = true, silent = true })

VS Code

查看 vyper-lsp VS Code 扩展

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

vyper-lsp-0.0.9.tar.gz (50.9 kB 查看哈希值)

上传时间 源代码

构建分发

vyper_lsp-0.0.9-py3-none-any.whl (51.8 kB 查看哈希值)

上传时间 Python 3

支持者