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 开发工具
每月735次下载
280KB
8K SLoC
odoo-lsp
功能
模型、XML ID 和模型字段的完成、定义和引用
适用于 record
、template
、env.ref()
和其他结构。对于 VSCode,还包括 Odoo XML 的基于模式的验证和完成。
将模型和 XML 记录作为工作区符号浏览
语法增强
为 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 Marketplace 和 Open VSX 注册表 获取。或者,您可以从 发布 获取最新的夜间构建。
Helix
- 确保您的路径上有
odoo-lsp
- 确定您的 Helix 运行时文件夹,例如 Linux 上的
~/.config/helix/
- 修改您的 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
]
- 或者,修改
$ROOT/.helix/languages.toml
,其中$ROOT
是您的 Odoo 模块根目录,以包括上述行。
Neovim 通过 lsp-zero.nvim
说明来自 lsp-zero 文档
- 确保您的路径上有
odoo-lsp
- 配置您的 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
以快速了解代码库。欢迎所有贡献!
pnpm i
cargobuild
- 在 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