O artigo é destinado a iniciantes em programação no Scala, que eu próprio sou, e apenas para aqueles que desejam começar a escrever código de programa no VSCode.
Aconteceu que o único guia sobre como trabalhar com Scala no Visial Studio Code foi
este vídeo no canal do YouTube DevInsideYou. Ele descreve detalhadamente a instalação e configuração do ambiente para VS Code e Sublime Text.
Este artigo é uma adaptação do vídeo com algumas adições minhas. Você pode assistir ao vídeo ou continuar lendo este artigo (ou os dois). Nesse caso, espero que seja útil para você.
Instalação
A primeira coisa que precisamos fazer é instalar o próprio
Scalu , bem como o sistema de criação de projetos do
SBT , se você ainda não o fez.
Para trabalhar com Scala no VSCode, há uma extensão
Metals .
Recursos de metais
- Diagnóstico preciso ao salvar:

- Transição para definição e pop-up de ajuda instantânea:

- Definição do tipo:

- Preenchimento automático ao discar:

Somente a funcionalidade básica está listada aqui, siga a
documentação para obter uma descrição mais detalhada.
A seguir, um trecho de um vídeo do DevInsideYou que demonstra como o Scala interage com os editores de código:
Protocolo do servidor de idiomas - usado entre a ferramenta cliente (IDE) e os servidores que fornecem funções específicas para uma linguagem de programação (preenchimento automático, transição para definição etc.).
Metais =
Meta (de Scalameta) +
LS (do Servidor de Idiomas - o protocolo padrão do servidor de idiomas).
O LSP reduz a complexidade m-times-n, fornecendo um alto nível de suporte para qualquer linguagem de programação em qualquer editor, IDE ou terminal de cliente, para a tarefa mais simples m-plus-n.
O LSP foi criado pela Microsoft para definir uma linguagem comum que os analisadores de linguagem de programação possam falar. O Microsoft Visual Studio Code suporta esse protocolo pronto para uso.
O LSP permite que as comunidades de idiomas se concentrem em um servidor de idiomas de alto desempenho, que pode fornecer preenchimento de código, dicas de ferramentas, ir para definição, procurar links e muito mais, enquanto editores e comunidades de clientes podem se concentrar na criação de um único e intuitivo de alto desempenho. e uma extensão idiomática que pode se comunicar com qualquer servidor de idiomas para fornecer instantaneamente um suporte profundo a idiomas.
Inicialização do Projeto
1 via
Inicialização via
arquivo scala . Para fazer isso, abra a pasta do projeto e crie a seguinte estrutura padrão:
Exemplo de saída após o primeiro início do Metals:
2 vias
A segunda maneira envolve o uso de
moinho . Para fazer isso, crie o arquivo build.sc na pasta do projeto e abra-o.
Exemplo de saída após o primeiro início do Metals:
3 vias (final)
Inicialização com o
SBT . Crie um arquivo
build.sbt na pasta do projeto com o seguinte conteúdo:
name := "scala-vscode-example" version := "0.1" scalaVersion := "2.13.1" triggeredMessage := Watched.clearWhenTriggered autoStartServer := false scalacOptions ++= Seq( "-feature", "-deprecation", "-language:implicitConversions", "-language:higherKinds" ) addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.10.3")
Exemplo de saída após o primeiro início do Metals:
Quando o Metals detecta um espaço de trabalho sbt para o qual não há
project / build.properties , uma notificação pop-up aparece recomendando que você atualize para 0.13.7:
Eles recomendam o uso do sbt versão 1.2.8. Para alterar a versão sbt, faça as seguintes alterações no
arquivo project / build.properties :
Para verificar a versão sbt, use o comando:
$ sbt sbtVersion
Inicializamos o ambiente de trabalho sbt na pasta do projeto:
$ sbt
Projeto de importação
Para importar o projeto, clique no botão
Importar construção na notificação exibida ou insira o comando:
Depois de fazer alterações em qualquer escala, o arquivo Metals o compila automaticamente:
Médico
Usado para corrigir possíveis problemas de configuração de compilação. Para começar a usar:
Conclusão:
Bloop
O Bloop é um servidor de compilação e uma ferramenta CLI para Scala que funciona com o SBT e tem suporte experimental para outras ferramentas de compilação, como
Maven ,
Gradle e
Mill . Se seu espaço de trabalho contiver um diretório
.bloop com arquivos JSON Bloop, o Metals se conectará automaticamente a ele.
Benefícios Bloop:- Compila, testa e executa o código Scala o mais rápido possível. A compilação ocorre automaticamente quando o código fonte é alterado, o lançamento e o teste do programa não requerem uma recompilação;
- Integra-se facilmente com ferramentas de criação, aplicativos de linha de comando, editores e ferramentas personalizadas;
- Ele inicia separadamente do IDE, portanto, não depende de sua conclusão ou reinicialização;
- Acelera a abertura do projeto, pois o Metals não precisa executar o servidor interno para você.
O seguinte snippet do vídeo "Happy Life With Scala Metals" mostra o processo de criação do aplicativo:
Nota : existem algumas imprecisões na figura.
Gabriele Petronella aponta para eles em seu comentário no vídeo:
Na figura, as setas inferiores do BSP estão tecnicamente incorretas. Como você (corretamente) apontou, se a ferramenta de construção fala BSP, ela pode se integrar diretamente aos metais sem passar pelo Bloop. Mover de uma ferramenta de construção para um Bloop é uma maneira de adicionar a integração do BSP à própria ferramenta de construção, e é uma etapa especial que não usa o BSP. Mais informações podem ser encontradas aqui .
O Bloop se integra aos IDEs e aos editores de texto, fornecendo um curto ciclo de feedback e diagnóstico confiável do compilador.
Bloop é usado em Metais de duas maneiras possíveis:- Se o Bloop estiver instalado no seu computador, o Metals simplesmente se conectará a um servidor de compilação existente (recomendado);
- Se o Bloop não estiver instalado, o servidor Metals fará o download e o executará no modo nativo.
O SemanticDB é um modelo de dados para informações semânticas, como caracteres e tipos, sobre programas no Scala e em outros idiomas. Após compilar o projeto, o sbt-metais envia as informações para o banco de dados local semanticdb-scala.
Instalação Bloop
Para começar, baixe a
versão mais recente :
$ curl -L https://github.com/scalacenter/bloop/releases/download/v1.3.2/install.py | python
Em seguida, você precisa criar uma cópia do serviço de bloop para o usuário atual:
$ cp ~/.bloop/systemd/bloop.service ~/.config/systemd/user/
Além disso, para não escrever constantemente o caminho para o script, você pode copiar o bloop para
/ usr / bin :
$ sudo cp /.bloop/bloop /usr/bin/
Reinicialize o daemon systemctl:
$ systemctl --user daemon-reload
Adicionando um bloop à inicialização:
$ systemctl --user enable bloop
No entanto, se você não estiver trabalhando com o Scala constantemente, não recomendo remover este serviço da inicialização. Você pode desativar a execução automática com o seguinte comando:
$ systemctl --user disable bloop
Correndo bloop:
$ systemctl --user start bloop
Exibir informações sobre a conexão atual:

Lançamento do aplicativo
Quando o serviço de bloop está em execução, você pode executar seu programa compilado usando este comando no diretório do projeto:
$ bloop run <proj-name>
Você também pode adicionar uma tecla de atalho ao
~ / .config / Code / User / keybindings.json :
{ "key": "meta+r", "command": "workbench.action.terminal.sendSequence", "args": { "text": "bloop run ${workspaceFolderBasename}\u000D" } }
Se você não tiver um serviço de bloop em execução, poderá iniciar o aplicativo diretamente por meio do sbt; no entanto, nesse caso, o aplicativo será recompilado a cada vez, o que afetará o momento em que o programa é iniciado:
$ sbt run
Dados de origem
Um pequeno caso de teste de um projeto scala está
neste repositório no github. Se você também manter seus projetos, adicione a seguinte lista de exceções ao arquivo
.gitignore :
*.class *.log project/ target/ .bloop/ .metals/