#语言服务器 #XML #Python #LSP #JavaScript

bin+lib odoo-lsp

Odoo Python/JS/XML 语言服务器

10 个不稳定版本 (3 个破坏性更新)

0.4.1 2024年5月1日
0.3.1 2024年3月6日
0.3.0 2023年12月18日
0.2.1 2023年11月7日

#368 in 开发工具

Download history 11/week @ 2024-04-23 135/week @ 2024-04-30 1/week @ 2024-05-14 8/week @ 2024-05-21

每月735次下载

MIT 许可证

280KB
8K SLoC

odoo-lsp

nightly

功能

模型、XML ID 和模型字段的完成、定义和引用

适用于 recordtemplateenv.ref() 和其他结构。对于 VSCode,还包括 Odoo XML 的基于模式的验证和完成。

model demo

将模型和 XML 记录作为工作区符号浏览

symbols demo

语法增强

为 Odoo XML 中的 Python、JavaScript 和 XPath 表达式提供 VSCode 中的语法高亮。

https://github.com/Desdaemon/odoo-lsp/assets/36768030/6003d5fe-9617-41df-ae3d-a704af77455c

要查看更多功能,请访问 wiki

安装

VSCode 扩展会自动下载最新版本;其他编辑器需要在路径上安装 odoo-lsp。主要平台也提供了夜间版本的二进制文件,请查看 发布 以获取最新下载。

# One-line
curl -L https://github.com/Desdaemon/odoo-lsp/releases/download/nightly/odoo-lsp-x86_64-unknown-linux-musl.tgz | tar -xzvf -

# Apple Silicon
curl -L https://github.com/Desdaemon/odoo-lsp/releases/download/nightly/odoo-lsp-aarch64-apple-darwin.tgz | tar -xzvf -

# With cargo-binstall
cargo binstall odoo-lsp

# Install from source
cargo install odoo-lsp

# Update in-place, optionally with --nightly
odoo-lsp self-update

设置

有关详细使用说明,请查看 wiki(正在进行中)。

VSCode

odoo-lsp 可从 Visual Studio MarketplaceOpen VSX 注册表 获取。或者,您可以从 发布 获取最新的夜间构建。

Helix

.helix/languages.toml

  1. 确保您的路径上有 odoo-lsp
  2. 确定您的 Helix 运行时文件夹,例如 Linux 上的 ~/.config/helix/
  3. 修改您的 Helix 运行时文件夹中的 languages.toml(如果不存在,则创建一个)以包括以下行
[language-server]
# Update the path to match your setup
odoo-lsp.command = "odoo-lsp"

[[language]]
name = "xml"
language-servers = ["odoo-lsp"]
roots = [".odoo_lsp", ".odoo_lsp.json"]

[[language]]
name = "python"
roots = [
   ".odoo_lsp", ".odoo_lsp.json",
   # add the default roots here
]
# Order is important here
language-servers = [
   "odoo-lsp",
   # add the default language servers here
   "pylsp",
   # and any you need
]
  1. 或者,修改 $ROOT/.helix/languages.toml,其中 $ROOT 是您的 Odoo 模块根目录,以包括上述行。

Neovim 通过 lsp-zero.nvim

说明来自 lsp-zero 文档

  1. 确保您的路径上有 odoo-lsp
  2. 配置您的 Neovim (Lua) 配置文件,例如在 ~/.config/nvim/init.lua,使用 lsp-zero.nvim,在调用 lsp.setup() 之前添加 odoo-lsp 作为新服务器
-- lsp-zero stanza
local lsp = require('lsp-zero').preset({})
lsp.on_attach(function(client, bufnr)
  lsp.default_keymaps({buffer = bufnr})
end)

local lspconfigs = require 'lspconfig.configs'

-- define our custom language server here
lspconfigs.odoo_lsp = {
  default_config = {
    name = 'odoo-lsp',
    cmd = {'odoo-lsp'},
    filetypes = {'javascript', 'xml', 'python'},
    root_dir = require('lspconfig.util').root_pattern('.odoo_lsp', '.odoo_lsp.json', '.git')
  }
}

local configured_lsps = {
  odoo_lsp = {},
  -- optional but recommended, requires pyright-langserver on path
  pyright = {},
}

local lspconfig = require 'lspconfig'
for name, config in pairs(configured_lsps) do
  lspconfig[name].setup(config)
end

-- LSP setup done
lsp.setup()

完整的示例可以在 examples/init.lua 中找到。

故障排除

使用环境变量 RUST_LOG 运行您的编辑器,例如,对于 VSCode

RUST_LOG=odoo_lsp=debug code ..

这将启用 LSP 服务器 的调试日志,您可以通过编辑器的日志机制查看这些日志。请将日志包含在您打开的问题中。

开发

不知道从哪里开始?运行 cargo doc --bin odoo-lsp 以快速了解代码库。欢迎所有贡献!

  1. pnpm i
  2. cargobuild
  3. 在 VSCode 中,按 F5 或切换到调试面板并点击 Launch Client

注意 如果遇到类似 Cannot find module '/xxx/xxx/dist/extension.js' 的错误,请尝试手动运行命令 tsc -b,您可以通过 https://github.com/IWANABETHATGUY/tower-lsp-boilerplate/issues/6 获取更多详细信息

依赖关系

~33–51MB
~1M SLoC