Configurar VSCode para trabajar con Scala


El art铆culo est谩 dirigido a principiantes en programaci贸n en Scala, que yo mismo soy, y solo para aquellos que desean comenzar a escribir c贸digo de programa en VSCode.

Dio la casualidad de que la 煤nica gu铆a para trabajar con Scala en Visial Studio Code fue este video en el canal DevInsideYou de YouTube. Describe con gran detalle el proceso de instalaci贸n y configuraci贸n del entorno para VS Code y Sublime Text.

Este art铆culo es una adaptaci贸n del video con algunas adiciones m铆as. Puede ir a ver el video o continuar leyendo este art铆culo (o hacer ambas cosas), en cuyo caso, espero que le sea 煤til.

Instalaci贸n


Lo primero que debemos hacer es instalar Scalu , as铆 como el sistema de compilaci贸n del proyecto SBT , si a煤n no lo ha hecho.


Para trabajar con Scala en VSCode hay una extensi贸n de Metales .

Caracter铆sticas de metales


  • Diagn贸stico preciso al guardar:
  • Transici贸n a la ventana emergente de ayuda de definici贸n y desplazamiento:
  • Definici贸n de tipo:
  • Autocompletado al marcar:

Aqu铆 solo se enumera la funcionalidad b谩sica; siga la documentaci贸n para obtener una descripci贸n m谩s detallada.

El siguiente es un fragmento de un video DevInsideYou que muestra c贸mo interact煤a Scala con los editores de c贸digo:


Protocolo de servidor de idiomas : utilizado entre la herramienta cliente (IDE) y los servidores que proporcionan funciones espec铆ficas de un lenguaje de programaci贸n (autocompletado, transici贸n a la definici贸n, etc.).

Metales = Meta (de Scalameta) + LS (de Language Server - el protocolo est谩ndar del servidor de idiomas).

LSP reduce la complejidad de m-times-n al proporcionar un alto nivel de soporte para cualquier lenguaje de programaci贸n en cualquier editor, IDE o punto final del cliente, a la tarea m谩s simple m-plus-n. LSP fue creado por Microsoft para definir un lenguaje com煤n que los analizadores de lenguaje de programaci贸n puedan hablar. Microsoft Visual Studio Code admite este protocolo fuera de la caja.

LSP permite que las comunidades de idiomas se centren en un servidor de idiomas de alto rendimiento, que puede proporcionar compleci贸n de c贸digo, informaci贸n sobre herramientas, definici贸n, b煤squeda de enlaces y mucho m谩s, mientras que los editores y las comunidades de clientes pueden centrarse en crear un 煤nico, intuitivo y de alto rendimiento. y una extensi贸n idiom谩tica que puede comunicarse con cualquier servidor de idiomas para proporcionar al instante un soporte de lenguaje profundo.

Inicializacion del proyecto


1 camino


Inicializaci贸n a trav茅s del archivo scala . Para hacer esto, abra la carpeta del proyecto y cree la siguiente estructura predeterminada:


Salida de muestra despu茅s del primer inicio de Metales:



2 v铆as


La segunda forma implica el uso de molino . Para hacer esto, cree el archivo build.sc en la carpeta del proyecto y 谩bralo.

Salida de muestra despu茅s del primer inicio de Metales:


3 v铆as (final)


Inicializaci贸n con SBT . Cree un archivo build.sbt en la carpeta del proyecto con el siguiente contenido:

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") 

Salida de muestra despu茅s del primer inicio de Metales:


Cuando Metals detecta un espacio de trabajo sbt para el que no hay project / build.properties , aparece una notificaci贸n emergente que recomienda que actualice a 0.13.7:


Recomiendan usar sbt versi贸n 1.2.8. Para cambiar la versi贸n de sbt, realice los siguientes cambios en el archivo project / build.properties :


Para verificar la versi贸n de sbt, use el comando:

 $ sbt sbtVersion 

Inicializamos el entorno de trabajo sbt en la carpeta del proyecto:

 $ sbt 

Proyecto de importaci贸n


Para importar el proyecto, haga clic en el bot贸n Importar compilaci贸n en la notificaci贸n que aparece o ingrese el comando:


Despu茅s de realizar cambios en cualquier escala, el archivo de Metales lo compilar谩 autom谩ticamente:


Doctor


Se utiliza para solucionar posibles problemas de configuraci贸n de compilaci贸n. Para comenzar a usar:


Conclusi贸n


Bloop


Bloop es un servidor de compilaci贸n y una herramienta de CLI para Scala que funciona con SBT y tiene soporte experimental para otras herramientas de compilaci贸n como Maven , Gradle y Mill . Si su espacio de trabajo contiene un directorio .bloop con archivos Bloop JSON, Metals se conectar谩 autom谩ticamente a 茅l.

Beneficios de Bloop:

  • Compila, prueba y ejecuta el c贸digo Scala lo m谩s r谩pido posible. La compilaci贸n se produce autom谩ticamente cuando se cambia el c贸digo fuente, el lanzamiento y las pruebas del programa no requieren una nueva compilaci贸n;
  • Se integra f谩cilmente con herramientas de compilaci贸n, aplicaciones de l铆nea de comandos, editores y herramientas personalizadas;
  • Comienza por separado del IDE, por lo que no depende de su finalizaci贸n o reinicio;
  • Acelera la apertura del proyecto, ya que Metals no necesita ejecutar el servidor incorporado por usted.

El siguiente fragmento del video "Happy Life With Scala Metals" muestra el proceso de creaci贸n de la aplicaci贸n:


Nota : hay algunas imprecisiones en la figura. Gabriele Petronella los se帽ala en su comentario debajo del video:
En la figura, las flechas BSP inferiores son t茅cnicamente incorrectas. Como usted (correctamente) se帽al贸, si la herramienta de construcci贸n habla BSP, puede integrarse directamente con metales sin pasar por Bloop. Pasar de una herramienta de compilaci贸n a un Bloop es una forma de agregar integraci贸n BSP a la herramienta de compilaci贸n en s铆, y es un paso especial que no utiliza BSP. M谩s informaci贸n se puede encontrar aqu铆 .
Bloop se integra con IDEs y editores de texto, proporcionando un ciclo de retroalimentaci贸n corto y diagn贸sticos confiables del compilador.

Bloop se utiliza en metales de dos formas posibles:
  1. Si Bloop est谩 instalado en su computadora, Metals simplemente se conectar谩 a un servidor de compilaci贸n existente (recomendado);
  2. Si Bloop no est谩 instalado, el servidor de Metals lo descargar谩 y lo ejecutar谩 en modo nativo.

SemanticDB es un modelo de datos para informaci贸n sem谩ntica, como caracteres y tipos, sobre programas en Scala y otros idiomas. Despu茅s de compilar el proyecto, sbt-metals env铆a la informaci贸n a la base de datos local semanticdb-scala.

Instalaci贸n de Bloop


Para comenzar, descargue la 煤ltima versi贸n :

 $ curl -L https://github.com/scalacenter/bloop/releases/download/v1.3.2/install.py | python 

A continuaci贸n, debe crear una copia del servicio bloop para el usuario actual:

 $ cp ~/.bloop/systemd/bloop.service ~/.config/systemd/user/ 

Adem谩s, para no escribir constantemente la ruta al script, puede copiar bloop en / usr / bin :

 $ sudo cp /.bloop/bloop /usr/bin/ 

Reinicie el demonio systemctl:

 $ systemctl --user daemon-reload 

Agregar un bloop al inicio:

 $ systemctl --user enable bloop 

Sin embargo, si no va a trabajar con Scala constantemente, no le recomiendo eliminar este servicio desde el inicio. Puede deshabilitar la ejecuci贸n autom谩tica con el siguiente comando:

 $ systemctl --user disable bloop 

Running bloop:

 $ systemctl --user start bloop 

Mostrar informaci贸n sobre la conexi贸n actual:



Lanzamiento de la aplicaci贸n


Cuando se ejecuta el servicio bloop, puede ejecutar su programa compilado utilizando este comando en el directorio del proyecto:

 $ bloop run <proj-name> 

Tambi茅n puede agregar una tecla de acceso r谩pido a ~ / .config / Code / User / keybindings.json :

  {    "key": "meta+r",    "command": "workbench.action.terminal.sendSequence",    "args": {      "text": "bloop run ${workspaceFolderBasename}\u000D"    } } 

Si no tiene un servicio bloop ejecut谩ndose, puede iniciar la aplicaci贸n directamente a trav茅s de sbt, sin embargo, en este caso, la aplicaci贸n se volver谩 a compilar cada vez, lo que afectar谩 el tiempo de inicio del programa:

 $ sbt run 

Datos de origen


Un peque帽o caso de prueba de un proyecto scala se encuentra en este repositorio en github. Si tambi茅n mantendr谩 sus proyectos, aseg煤rese de agregar la siguiente lista de excepciones al archivo .gitignore :

 *.class *.log project/ target/ .bloop/ .metals/ 

Source: https://habr.com/ru/post/469707/


All Articles