Servidores LSP
OpenCode integra com seus servidores LSP.
OpenCode integra com o Language Server Protocol (LSP) para ajudar o LLM a interagir com sua base de código. Ele usa diagnósticos para fornecer feedback ao LLM.
Suporte Integrado
OpenCode inclui vários servidores LSP integrados para linguagens populares:
| Servidor LSP | Extensões | Requisitos |
|---|---|---|
| astro | .astro | Instalação automática para projetos Astro |
| bash | .sh, .bash, .zsh, .ksh | Instalação automática de bash-language-server |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Instalação automática para projetos C/C++ |
| csharp | .cs | .NET SDK instalado |
| clojure-lsp | .clj, .cljs, .cljc, .edn | Comando clojure-lsp disponível |
| dart | .dart | Comando dart disponível |
| deno | .ts, .tsx, .js, .jsx, .mjs | Comando deno disponível (detecta automaticamente deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | Comando elixir disponível |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | Dependência eslint no projeto |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK instalado |
| gleam | .gleam | Comando gleam disponível |
| gopls | .go | Comando go disponível |
| hls | .hs, .lhs | Comando haskell-language-server-wrapper disponível |
| jdtls | .java | Java SDK (versão 21+) instalado |
| kotlin-ls | .kt, .kts | Instalação automática para projetos Kotlin |
| lua-ls | .lua | Instalação automática para projetos Lua |
| nixd | .nix | Comando nixd disponível |
| ocaml-lsp | .ml, .mli | Comando ocamllsp disponível |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | Dependência oxlint no projeto |
| php intelephense | .php | Instalação automática para projetos PHP |
| prisma | .prisma | Comando prisma disponível |
| pyright | .py, .pyi | Dependência pyright instalada |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | Comandos ruby e gem disponíveis |
| rust | .rs | Comando rust-analyzer disponível |
| sourcekit-lsp | .swift, .objc, .objcpp | swift instalado (xcode no macOS) |
| svelte | .svelte | Instalação automática para projetos Svelte |
| terraform | .tf, .tfvars | Instalação automática do GitHub releases |
| tinymist | .typ, .typc | Instalação automática do GitHub releases |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | Dependência typescript no projeto |
| vue | .vue | Instalação automática para projetos Vue |
| yaml-ls | .yaml, .yml | Instalação automática do Red Hat yaml-language-server |
| zls | .zig, .zon | Comando zig disponível |
Servidores LSP são habilitados automaticamente quando uma das extensões de arquivo acima é detectada e os requisitos são atendidos.
Nota: Você pode desabilitar downloads automáticos de servidores LSP configurando a variável de ambiente
OPENCODE_DISABLE_LSP_DOWNLOADparatrue.
Como Funciona
Quando opencode abre um arquivo:
- Verifica a extensão do arquivo contra todos os servidores LSP habilitados.
- Inicia o servidor LSP apropriado se ainda não estiver em execução.
Configuração
Você pode personalizar servidores LSP através da seção lsp na sua configuração do opencode.
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}Cada servidor LSP suporta o seguinte:
| Propriedade | Tipo | Descrição |
|---|---|---|
disabled | boolean | Definir como true para desabilitar o servidor LSP |
command | string[] | O comando para iniciar o servidor LSP |
extensions | string[] | Extensões de arquivo que este servidor LSP deve manipular |
env | object | Variáveis de ambiente ao iniciar o servidor |
initialization | object | Opções de inicialização para enviar ao servidor LSP |
Vamos ver alguns exemplos.
Variáveis de ambiente
Use a propriedade env para definir variáveis de ambiente ao iniciar o servidor LSP:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"env": {
"RUST_LOG": "debug"
}
}
}
}Opções de inicialização
Use a propriedade initialization para passar opções de inicialização ao servidor LSP. Estas são configurações específicas do servidor enviadas durante a requisição LSP initialize:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}Nota: Opções de inicialização variam por servidor LSP. Consulte a documentação do seu servidor LSP para opções disponíveis.
Desabilitar servidores LSP
Para desabilitar todos os servidores LSP globalmente, defina lsp como false:
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}Para desabilitar um servidor LSP específico, defina disabled como true:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}Servidores LSP personalizados
Você pode adicionar servidores LSP personalizados especificando o comando e extensões de arquivo:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}Informações Adicionais
PHP Intelephense
PHP Intelephense oferece recursos premium através de uma chave de licença. Você pode fornecer uma chave de licença colocando (apenas) a chave em um arquivo de texto em:
- macOS/Linux:
$HOME/intelephense/licence.txt - Windows:
%USERPROFILE%/intelephense/licence.txt
O arquivo deve conter apenas a chave de licença sem conteúdo adicional.