Continuando con uno de los post anteriores sobre la integración de Pascal en VS Code, en esta entrada seguiremos viendo dos puntos adicionales asociados que nos ayudarán a facilitar y mejorar el uso.
Integración en la ejecución:
Hasta lo visto en el post mencionado, logramos configurar de forma correcta la compilación de nuestro código en Pascal, pero nos quedaba integrar la ejecución. Lo primero que haremos para ello es instalar la extensión que nos permitirá ejecutar usando GDB, el depurador utilizado por Pascal. Como ya vimos, esto lo haremos presionando Ctrl+P en VS Code y ejecutando el siguiente comando:
ext install webfreak.debug
Una vez finalizada la instalación de la extensión y reinicializado VS Code, si presionamos la tecla F5 (atajo de teclado para la ejecución) se nos solicitará el entorno de desarrollo a usar. Como mencionamos la opción a utilizar es GDB:
Una vez realizada la selección del mismo se agregará el archivo launch.json dentro de la carpeta .vscode con el siguiente contenido de ejemplo para que nosotros apliquemos la configuración deseada:
Realmente para este caso sólo deberemos hacer es algunos ajustes mínimos para lograr ejecutar nuestra aplicación.
Lo primero será modificar el valor del atributo target para colocar el nombre de la aplicación que estamos desarrollando en nuestro entorno (debería ser el de nuestro programa con la extensión exe).
Lo siguiente será indicar la terminal sobre la cual ejecutaremos nuestra aplicación, ya que por defecto lo hará en la integrada en VS Code. De esta forma el archivo resultante quedará como lo podemos ver a continuación:
{ | |
"version": "0.1.0", | |
"configurations": [ | |
{ | |
"name": "Debugger", | |
"type": "gdb", | |
"request": "launch", | |
"target": "Demo.exe", | |
"cwd": "${workspaceRoot}", | |
"terminal": "cmd" | |
} | |
] | |
} |
Con esto ya tenemos nuestra configuración realizada, por lo cual mediante el comando Ejecutar tendremos la integración correspondiente:
Formateado del código:
Una de las funcionalidades que nos suelen ofrecer algunos IDE’s es la posibilidad de darle formato a nuestro código de forma automática. Es decir la tabulación del código y los saltos de línea correspondientes según el estándar del lenguaje. VS Code ofrece un punto de integración para esto, y en el caso del lenguaje Pascal tenemos la posibilidad de configurar esta característica por la instalación de la extensión Pascal.
Lo que debemos hacer es ir a la opción Preferencias > Configuración del usuario. Allí nos aparecerá la siguiente pantalla, donde a la izquierda están las configuraciones generales (solo lectura) y a la derecha las que nosotros configuremos, sobre-escribiendo las originales:
Será entonces en la parte derecha donde trabajaremos con nuestra configuración. Para este propósito particular, lo que deberemos hacer es agregar las configuraciones para los atributos “pascal.formatter.engine“ y “pascal.formatter.enginePath“ de la siguiente forma (si nuestro archivo no tenía nada como en nuestro ejemplo, quedará tal cual se muestra):
{ | |
"pascal.formatter.engine": "ptop", | |
"pascal.formatter.enginePath": "C:\\FPC\\3.0.0\\bin\\i386-win32\\ptop.exe" | |
} |
En la primera configuración indicamos el motor de formato que se debe utilizar, y en la segunda la ubicación del mismo (la indicada es la ubicación estándar de la instalación, tener en cuenta la versión de FPC utilizada). En este caso estamos usando ptop, el cual ya viene por defecto con la instalación de FPC, sin embargo podrá usarse jcf también.
Una vez que tengamos esta configuración, si realizamos el formateo del código con el atajo Shift+Alt+F veremos que el mismo se ajusta de forma correcta:

Más allá del uso o no de Pascal como lenguaje de programación, espero que con estos post’s haya quedado de manifiesto la potencialidad que tiene VS Code como IDE de desarrollo en general, yendo mucho más allá de un simple editor de texto genérico. A mi criterio está muy bien planteada la idea original, teniendo un IDE liviano, multiplataforma, extensible y que nos da la libertad para trabajar con el lenguaje de nuestra preferencia a partir de distintas extensiones y puntos de integración.
Gracias por leer!!
Muy bueno el post. Ahora tengo una duda. Hay alguna manera de poner el nombre del nuevo archivo automáticamente en el launch.json y task.json? Saludos!
Me gustaMe gusta
Buenas, muchas gracias!
Si el compilador tiene un argumento para indicar eso, lo podrías agregar dentro del archivo tasks.json. Y luego vas a tener que modificar el launch.json para que use ese nuevo nombre de ejecutable.
Saludos!
Me gustaMe gusta
Podrías explicarlo detalladamente? Desde ya muchas gracias!
Me gustaMe gusta
Buenas! En la documentación oficial (https://www.freepascal.org/docs-html/user/userap1.html) se menciona el uso del parámetro “-o” para establecer el nombre del archivo de salida generado.
De esta forma, el archivo tasks.json queda de la siguiente forma: https://gist.github.com/diegobersano/6ac66b2bea8f581e71e94eb79d9b97b8
Espero que te sirva, saludos!
Me gustaMe gusta
Muchas gracias!
Me gustaMe gusta
Hola podrias ponerlo para la version 2.0? desde ya gracias
Me gustaMe gusta
Disculpame pero poniendo control p no me aparece mas la extension “ext install webfreak.debug” , abran cambiado algo? 12/05/18 saludos!
Me gustaMe gusta
Hola! Por lo que veo sigue estando disponible esa librería: https://marketplace.visualstudio.com/items?itemName=webfreak.debug
¿Qué error te da?
Saludos!
Me gustaMe gusta
Buenas, estoy teniendo un problema.
Luego de realizar todo, al darle F5 para ejecutar, me salta este error:
“Failed to load MI Debugger: Error: write EPIPE”,
Como lo soluciono?
Saludos
Me gustaMe gusta
Hola Facundo, me pasarías el contenido del archivo launch.json para validarlo?
Saludos!
Me gustaMe gusta
Este es el contenido:
{
“version”: “0.1.0”,
“configurations”: [
{
“name”: “Debugger”,
“type”: “gdb”,
“request”: “launch”,
“target”: “Demo.exe”,
“cwd”: “${workspaceRoot}”,
“terminal”: “cmd”
}
]
}
Me gustaMe gusta
En ese caso, el valor “Demo.exe” es el ejecutable que se generó porque yo estaba usando el archivo “Demo.pas”. Vos estás usando ese mismo nombre? Sino deberías ajustarlo para que coincida.
Saludos!
Me gustaMe gusta
Si, estoy usando el mismo nombre…
Estuve buscando por muchos lados pero no hay mucha informacion acerca del tema ni del error…
Creo igual que el problema esta en mi task.json:
{
“version”: “0.1.0”,
“windows”: {
“command”: “C:\\FPC\\3.0.0\\bin\\i386-win32\\fpc.exe”
},
“isShellCommand”: true,
“showOutput”: “always”,
“args”: [
“Demo”
],
“problemMatcher”: {
“owner”: “external”,
“pattern”: {
“regexp”: “^([\\w]+\\.p)\\((\\d+)\\,(\\d+)\\)\\s(Fatal|Error|Warning|Note):(.*)”,
“file”: 1,
“line”: 2,
“column”: 3,
“message”: 5
}
}
}
(tengo el programa instalado en otro disco que no es el C)
Me gustaMe gusta
Que tal Diego? Después de tanto volvi a probar, y vi que me contestaste y actualizaste la entrada anterior, te agradezco x eso. Ahora estoy metiendo mano con esta entrada, y probando varios codigos, al presionar f5 se me abre un cmd y se cierra instantaneamente, poniendo varios readln() abajo como para que no pase, ya que es un error tipico de pascal, pero ni con eso se arregla. También otra cosa sobre el post este, es que lo de formatear el codigo automaticamente esta desactualizado a la nueva version de vs code, lo más cercano que encontre fue meterme a la pestaña file, despues preferences, despues user settings pero no me encuentro con lo que vos publicas. Y por ultimo, también me interesó eso de si se podia actualizar solo el json para que no tengamos que estar cambiandolo por el nombre del archivo cada vez que lo usamos, que también diste una respuesta a una versión vieja. Estaría buenisimo si pudieras pegarle un ojo a eso, más allá de que entiendo que son varias cosas las que marqué. Saludos y gracias.
Me gustaMe gusta