Português
Documentação
Servidores LSP

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 LSPExtensõesRequisitos
astro.astroInstalação automática para projetos Astro
bash.sh, .bash, .zsh, .kshInstalaçã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, .ednComando clojure-lsp disponível
dart.dartComando dart disponível
deno.ts, .tsx, .js, .jsx, .mjsComando deno disponível (detecta automaticamente deno.json/deno.jsonc)
elixir-ls.ex, .exsComando elixir disponível
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueDependência eslint no projeto
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK instalado
gleam.gleamComando gleam disponível
gopls.goComando go disponível
hls.hs, .lhsComando haskell-language-server-wrapper disponível
jdtls.javaJava SDK (versão 21+) instalado
kotlin-ls.kt, .ktsInstalação automática para projetos Kotlin
lua-ls.luaInstalação automática para projetos Lua
nixd.nixComando nixd disponível
ocaml-lsp.ml, .mliComando ocamllsp disponível
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteDependência oxlint no projeto
php intelephense.phpInstalação automática para projetos PHP
prisma.prismaComando prisma disponível
pyright.py, .pyiDependência pyright instalada
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruComandos ruby e gem disponíveis
rust.rsComando rust-analyzer disponível
sourcekit-lsp.swift, .objc, .objcppswift instalado (xcode no macOS)
svelte.svelteInstalação automática para projetos Svelte
terraform.tf, .tfvarsInstalação automática do GitHub releases
tinymist.typ, .typcInstalação automática do GitHub releases
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsDependência typescript no projeto
vue.vueInstalação automática para projetos Vue
yaml-ls.yaml, .ymlInstalação automática do Red Hat yaml-language-server
zls.zig, .zonComando 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_DOWNLOAD para true.

Como Funciona

Quando opencode abre um arquivo:

  1. Verifica a extensão do arquivo contra todos os servidores LSP habilitados.
  2. 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.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {}
}

Cada servidor LSP suporta o seguinte:

PropriedadeTipoDescrição
disabledbooleanDefinir como true para desabilitar o servidor LSP
commandstring[]O comando para iniciar o servidor LSP
extensionsstring[]Extensões de arquivo que este servidor LSP deve manipular
envobjectVariáveis de ambiente ao iniciar o servidor
initializationobjectOpçõ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:

opencode.json
{
  "$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:

opencode.json
{
  "$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:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": false
}

Para desabilitar um servidor LSP específico, defina disabled como true:

opencode.json
{
  "$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:

opencode.json
{
  "$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.