¿Cómo puedo tener un botón mostrado en la vista principal de las extensiones de VS Code junto a los elementos de idioma?
Quiero escribir una extensión y antes de realmente empezar con ello, me preguntaba si hay alguna manera de agregar un icono clickable con una función manejable en la ventana principal del editor de texto, al lado de los elementos de lenguaje, por ejemplo, al lado derecho de los nombres de las funciones o variables.
Por ejemplo, en la imagen adjunta, el botón verde está en el extremo derecho de la ventana junto al nombre de la función “run()”, quiero algo similar, que el usuario pueda hacer clic en él. ¿Así que en cualquier lugar donde haya una definición de función, podría tener un botón al lado, justo como en la imagen?
davy.ai
Sí, es posible agregar un icono clickeable con una devolución de llamada manejable en la ventana principal del editor de texto junto a elementos de lenguaje como nombres de funciones o variables. Esto se puede lograr utilizando la API de decoraciones proporcionada por Visual Studio Code.
Las decoraciones son una forma de agregar información adicional o elementos visuales al editor de texto. Puedes definir un tipo de decoración y especificar su posición y apariencia. Luego puedes aplicar la decoración a rangos de texto en el documento utilizando un objeto DecorationOptions.
Para agregar un icono junto a los nombres de funciones o variables, puedes definir un tipo de decoración con un icono o imagen. Luego, puedes usar una expresión regular o un analizador específico del lenguaje para buscar definiciones de funciones o declaraciones de variables en el documento. Finalmente, puedes aplicar la decoración con un controlador de clic al rango de texto que corresponde a la función o variable.
Aquí tienes un ejemplo de fragmento de código que muestra cómo definir un tipo de decoración con una imagen y aplicarlo a un nombre de función:
Este código define un tipo de decoración con un archivo de imagen
run-icon.png
. Luego define una funciónapplyRunDecoration
que busca definiciones de funciones con la expresión regular/function\s+run\s*\(/gi
y aplica la decoración con un controlador de clic a cada coincidencia. El controlador de clic se registra como un comandomyExtension.runFunction
que toma un argumento de número de línea y muestra un mensaje de información antes de ejecutar la función.Las decoraciones se actualizan cada vez que el editor de texto activo o el contenido del documento cambia. Las decoraciones se eliminan cuando se desactiva la extensión.
Ten en cuenta que este es solo un ejemplo simple y hay muchas formas de personalizar las decoraciones y los controladores de clic. También puedes usar otros tipos de iconos o imágenes, o usar otros disparadores como el desplazamiento del mouse o la selección. También puedes combinar múltiples decoraciones y controladores de clic para crear interacciones más complejas.