Índice da documentação

// Documentação do Singularity

Servidores de linguagem (LSP)

Um servidor de linguagem dá ao editor uma compreensão do teu código: analisa os ficheiros do projeto e responde aos pedidos de preenchimento automático, diagnóstico ou navegação do Singularity.

Para que serve um servidor de linguagem

O protocolo LSP separa o editor da ferramenta que compreende uma linguagem. O Singularity abre o teu ficheiro no CodeMirror e o servidor correspondente analisa o texto e o projeto. Não tens de configurar o protocolo: basta ativar o servidor da linguagem que usas.

Um servidor não executa o teu programa e não substitui o compilador nem os testes. As suas respostas são ajudas à edição; valida sempre o resultado com as ferramentas do projeto.

Linguagens suportadas

O painel LSP do Singularity 2.0.0 propõe exatamente 31 servidores:

  • TypeScript e JavaScript; JSON; HTML; CSS, SCSS e Less
  • Rust; Go; Python (Pyright); Python (Ruff); C e C++; Java
  • Lua; TOML; YAML; Bash; Elixir; Ansible; Dart; Dockerfile
  • GraphQL; Haskell; PHP; Kotlin; Markdown; C#; PowerShell
  • Ruby; Swift; Svelte; Terraform; Vue; Zig

TypeScript/JavaScript, JSON, HTML e CSS estão ativados por predefinição. Os restantes servidores começam desativados. Python e YAML têm cada um dois servidores possíveis; a ordem de registo determina qual deles trata um ficheiro quando as extensões se sobrepõem.

Instalar um servidor

  1. Abre Settings e escolhe LSP.
  2. Verifica que a integração LSP geral está ativa.
  3. Ativa o interruptor da linguagem pretendida e abre um ficheiro correspondente.

A linha do servidor indica o seu modo de arranque. Para uma entrada npx, o npm descarrega, se necessário, a versão predefinida fixada para a sua cache gerida pelo npm. Para uma entrada marcada on PATH, o Singularity não descarrega nenhum binário: instala o servidor com a ferramenta recomendada pelo seu ecossistema e torna o seu comando acessível no PATH da aplicação.

Painel LSP das definições do Singularity com a lista de servidores
Settings → LSP centraliza a ativação, o modo de arranque e as atualizações.

Atualizar

O painel verifica as versões quando é aberto. Quando está tudo atualizado, Check for updates força uma nova verificação. Se houver várias versões disponíveis, expande Details para as analisar ou escolhe Update all para as instalar uma após a outra.

Uma versão fixada é a versão de referência declarada pelo Singularity: o recurso ao npx usa-a em vez de obter cegamente latest. Ainda assim, a verificação pode propor uma versão mais recente. A atualização dos servidores npx efetua uma instalação npm global; os servidores fornecidos pelo PATH têm de ser atualizados com o seu gestor habitual.

O que traz ao editor

As funcionalidades efetivamente ligadas são o preenchimento automático durante a escrita ou com Ctrl+Space, as informações ao passar o rato, a ajuda de assinatura, os diagnósticos, as ações rápidas, as sugestões em linha e o esquema de símbolos do documento.

O menu de contexto permite ir para a definição, para a definição de tipo ou para a implementação, procurar as referências, mudar o nome e formatar. A pesquisa de símbolos do projeto está disponível com Cmd+T no macOS ou Ctrl+T nos restantes sistemas. As importações automáticas, a formatação de uma seleção, os tokens semânticos e a pré-visualização integrada de uma definição não estão atualmente disponíveis.

Diagnosticar um servidor que não arranca

Abre Help → Open Logs Folder ou Help → Show Log File e procura as entradas com o âmbito lsp. Indicam, nomeadamente, uma falha de arranque, um erro de execução ou a saída de erro do servidor.

  • Servidor on PATH: o comando não está instalado ou o PATH visível para o Singularity não o contém.
  • Servidor npx: falta o Node.js, o npm ou o acesso ao registo npm.
  • O servidor está desativado, a integração LSP geral está desligada ou a extensão do ficheiro não corresponde.
  • Dois servidores reivindicam a mesma extensão, nomeadamente para Python ou YAML.
  • O projeto não contém a configuração ou o SDK esperado pelo servidor.

Depois de corrigir, fecha e volta a abrir o ficheiro. Para problemas mais gerais de arranque, registos ou ambiente, consulta Resolução de problemas.