Saltar a contenido

Completar texto

Geany cuenta con la posibilidad de generar texto automáticamente. Veamos las diferentes posibilidades.

Autocompletado

Cuando comenzamos a teclear una palabra, Geany es capaz de sugerir posibles terminaciones, mostrando una lista emergente de palabras completas:

Basta con seleccionar una de esas palabras desplazándose por la lista con Down y Up y pulsando Enter o Tab para aceptar la palabra sugerida. Podemos descartar la lista de sugerencias pulsando Esc, o si seguimos tecleando caracteres, la lista desaparecerá cuando no haya coincidencias.

Esta función se activa con Editar > Preferencias > Editor > Completados > Autocompletar símbolos.

Geany puede ofrecer una lista de posibles palabras a partir de las que hay el panel de símbolos (barra lateral), y para los símbolos definidos en los archivos de configuración.

Podemos hacer que la lista de sugerencias se confeccione a partir de todas las palabras del documento, no solo las que aparecen en la lista de símbolos. Activar esta posibilidad con el menú Editar > Preferencias > Editor > Completados > Autocompletar todas las palabras.

La lista de sugerencias se muestra cuando se escriben los primeros caracteres. El número es configurable mediante Editar > Preferencias > Editor > Completados > Número de caracteres a escribir (valor predeterminado 4). La opción Altura de la lista de completado indica el número de filas que se mostrarán en la lista de sugerencias, o el número máximo de sugerencias.

Podemos forzar manualmente que se muestre la lista de sugerencias, pulsando la combinación de teclas Completar palabra. Es configurable, y la combinación predeterminada es Ctrl+Space.

Para algunos lenguajes, la lista de autocompletado estará ordenada intentando mostrar en la parte superior de la lista los nombres que tienen más probabilidades de ser lo que el usuario desea.

Si elegimos una sugerencia pulsando Enter o Tab, se eliminarán el resto de caracteres a la derecha del cursor si se establece la preferencia Eliminar el resto de la palabra al completar (en las preferencias de completado del editor).

La lista de sugerencias se forma en segundo plano, analizando los documentos y los archivos de configuración. Podemos establecer la frecuencia de actualización (en milisegundos) de la lista de símbolos si el rendimiento, en el caso de archivos grandes, nos da problemas. Pulsar en Editar > Preferencias > Editor > Completados. El valor predeterminado es 250 ms, lo que significa que la lista de símbolos se actualizará como máximo cuatro veces por segundo, tanto si el documento ha cambiado como si no lo ha hecho. Un valor de 0 deshabilita las actualizaciones automáticas, por lo que la lista de símbolos solo se actualizará al guardar el documento.

Símbolos de cierre

Geany puede insertar automáticamente un paréntesis, llave, corchete o comillas de cierre cuando insertamos un carácter de apertura. Por ejemplo, si tecleamos un carácter (, Geany añadirá automáticamente un ).

Con Editar > Preferencias > Editor > Completado podemos configurar para qué caracteres debería funcionar esto.

  • Paréntesis ( )
  • Llaves { }
  • Corchetes [ ]
  • Comillas simples ' '
  • Comillas dobles " "

Mostrar Ayudas

Supongamos que estamos escribiendo un programa en lenguaje C. Queremos añadir la instrucción:

printf("Hola");

En el momento que empezamos a teclear y llegamos a los cuatro caracteres (o el número configurado), se muestra una sugerencia de autocompletado. Aceptamos pulsando Tab. Al teclear el paréntesis de apertura:

printf(

se muestra una pequeña ayuda (calltip) en un recuadro emergente, mostrando un prototipo de la función con la lista de parámetros:

Podemos forzar que se muestre la ayuda, pulsando la combinación de teclas Mostrar pistas de prototipos (configurable, valor predeterminado Ctrl+Shift+Space).

Snippets

Los snippets son pequeños fragmentos de texto que serán reemplazados por un texto más complejo. Tecleamos una palabra clave, pulsamos Tab a continuación, y se hace la sustitución. Sirven para ahorrar tiempo al escribir textos de forma recurrente, dejando que Geany haga el trabajo por nosotros.

Hay dos tipos de snippets, los predeterminados por Geany y los que nosotros podemos crear. Por ejemplo, si estamos escribiendo un programa en lenguaje C y tecleamos la palabra if seguida de la tecla Tab, se sustituye por:

if (_)
{
    _
}

y tendremos que sustituir a mano los caracteres _ por el texto correspondiente. La sustitución deja el cursor en el primer bloque (el que hay entre paréntesis), porque en la definición del snippet se indica donde queda el cursor tras el proceso de transformación.

Los snippets son una función de Geany que se activa con Preferencias > Editor > Completado > Completado de construcciones.

Podemos crear nuevos snippets, o personalizar los predeterminados, editando un archivo de configuración llamado snippets.conf. Podemos acceder a su contenido mediante el menú Herramientas > Archivos de configuración > Snippets.conf.

Los snippets pueden ser genéricos, para todo tipo de documento, o específicos para determinados tipos de archivo. El contenido del snippets.conf se organiza en forma de secciones, con una línea de cabecera cada una. Por ejemplo, para establecer los snippets utilizados en programas escritos en lenguaje C:

[C]
#if=if (%cursor%)%block_cursor%
#else=else%block_cursor%
#for=for (i = 0; i < %cursor%; i++)%block_cursor%
#while=while (%cursor%)%block_cursor%
#do=do\n{\n\t%cursor%\n} while (%cursor%)\n
#switch=switch (%cursor%)%brace_open%case %cursor%:\n\t\t%cursor%\n\t\tbreak;\n\tdefault:\n\t\t%cursor%\n%brace_close%

Podemos averiguar cuales son los tipos de archivo contemplados por Geany si en un Terminal de comandos escribimos:

$ geany --ft-names

Las líneas precedidas por un carácter # se consideran comentarios, y son una forma de desactivar snippets. Por defecto se aplican los snippets predefinidos. Si quitamos el carácter # de una línea en el fichero de configuración, ese snippet reemplazará al estándar. En el ejemplo anterior, el snippet asignado a la palabra if es:

#if=if (%cursor%)%block_cursor%

y quitando el carácter inicial # podremos personalizarlo. Para que tengan efecto los cambios, guardar el fichero y ejecutar la opción de menú Herramientas > Recargar configuración (o reiniciar Geany).

El formato para definir un snippet es:

palabra_clave=texto

La palabra clave no puede contener espacios, ni tampoco puede haberlos a la izquierda y derecha del símbolo =.

La sección "[Default]" contiene los snippets que están disponibles para todo tipo de archivo. Por ejemplo:

[Default]
nombre=Julián Pérez

Cada vez que escribamos nombre seguido de la tecla Tab, reemplazará la palabra "nombre" por "Julián Pérez". Podemos cambiar la tecla Tab en el diálogo de preferencias, combinaciones de teclas. La tecla de atajo se denomina Completar construcción.

La sección "[Special]" contiene snippets que pueden usarse como parte de otros snippets. Por ejemplo, en el snippet:

if=if (%cursor%)%block_cursor%

el fragmento %block_cursor% es a su vez un snippet definido en la sección Special.

Al definir snippets, podemos usar ciertas secuencias:

  • \n , %newline% : inserta una nueva línea
  • \t , %ws% : inserta un nivel de sangría, de acuerdo con el modo de sangría del documento actual
  • \s : inserta espacios en blanco al principio o al final de un valor. Por ejemplo:
    • clave= valor no funcionará
    • clave=\svalor funciona
  • %cursor% : coloca el cursor en esa posición tras completar la sustitución. Podemos definir varios comodines %cursor% y usar la combinación de teclas asignada a la acción Mover cursor dentro de una construcción para saltar a la siguiente posición del cursor definida en el fragmento completado.
  • %clave%, siendo clave el nombre de un snippet en la sección "Special". Si por ejemplo hemos definido una clave llamada "brace_open" en la sección "Special", podemos usar %brace_open% en cualquier otro snippet.

Palabras clave

Como se ha mencionado, la palabra clave de un snippet no puede contener espacios. La sección "[Special]" puede contener una clave llamada "wordchars" que enumera todos los caracteres que una palabra clave puede contener para ser reconocida como tal:

#wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

Podemos dejarlo como comentario, con el prefijo #, y usar los caracteres predeterminados. O bien quitar ese prefijo, agregando o eliminando caracteres para que la lista se ajuste a nuestras necesidades (por ejemplo, para añadir las eñes).

Plantillas

Las plantillas son textos y formatos predefinidos por Geany, y utilizados tanto para crear snippets como para otras funciones del editor.

Por ejemplo, si en la definición de snippets ponemos:

[Default]
nombre=Mi nombre es {developer}
sistema=Mi sistema: {command:uname -a}

Esto reemplazará la palabra nombre por "Mi nombre es " seguido del valor del comodín developer, y la palabra sistema por el resultado de ejecutar el comando uname -a.

Podemos configurar el valor de los comodines mediante el menú Editar > Preferencias > Plantillas:

  • {developer} es el nombre del usuario
  • {initial} son sus iniciales
  • {mail} es su correo electrónico
  • {company} es el nombre de la empresa
  • {version} es el número de versión en nuevos proyectos

Las plantillas incluyen formatos para mostrar datos del sistema. Por ejemplo, podemos crear el siguiente snippet:

año={year}

y al teclear "año" seguido de Tab, se sustituirá por el año en curso con el formato especificado en la configuración de plantillas (por defecto, "%Y"). Las plantillas para mostrar fechas y horas son {year}, {date} y {datetime}. Los especificadores de formato son los de la biblioteca Glib, usada por Gtk+, que es uno de los componentes de Geany.

La plantilla {command:texto} ejecuta un comando del sistema operativo y genera un texto a partir del resultado de la ejecución del comando en cuestión.

Podemos obtener datos de Geany con:

  • {geanyversion} es la versión del editor que estamos utilizando, por ejemplo, "Geany 2.0"
  • {filename} es el nombre del archivo actual. En blanco si todavía no tiene nombre
  • {project} es el nombre del proyecto actual. Véase Gestión de proyectos más adelante.
  • {description} es el texto de descripción del proyecto, que establecemos con el menú Proyecto > propiedades

Atajos de teclado de snippet

El mecanismo de snippet funciona introduciendo una palabra clave y pulsando Tab para que se haga la sustitución. Ya hemos visto que podemos reemplazar esa tecla por otra utilizando el menú Editar > Preferencias > Combinaciones > Completar construcción.

Otra posibilidad es definir una combinación de teclas que, al pulsarla, genere el texto del snippet sin necesidad de introducir la palabra clave. Estas combinaciones se definen en el archivo snippets.conf, en el apartado [Keybindings]:

[Keybindings]
for=<Ctrl>7
block_cursor=<Ctrl>8

Las combinaciones de teclas de snippet pueden ser anuladas por las combinaciones de teclas configurables de Geany.

Insertando valores de color

En algunos lenguajes de programación necesitamos especificar en el texto del programa los códigos de color a utilizar. Por ejemplo:

background-color : #ff0000

El formato de los códigos de color suele ser #RRGGBB, representando una combinación de los tres colores básicos, donde:

  • RR es la cantidad de rojo, de 00 a FF en formato hexadecimal, es decir, de 0 a 255 en sistema de numeración decimal.
  • GG representa la cantidad de color verde
  • BB representa la cantidad de color azul

Algunos ejemplos:

Color Código
rojo          #FF0000
verde          #00FF00
azul          #0000FF
amarillo          #FFFF00
cian          #00FFFF
fucsia          #FF00FF
negro          #000000
gris          #808080
gris claro          #C0C0C0
blanco          #FFFFFF
marrón          #800000
verde oscuro          #008000
azul oscuro          #000080
dorado          #808000
púrpura          #800080
verde azulado          #008080

Geany proporciona una ventana de diálogo para seleccionar colores y obtener el código correspondiente. Se accede mediante el menú Herramientas > Selector de color:

Pulsando en un color veremos su código, y pulsando en el botón [Seleccionar], se inserta en el texto del documento.

Si antes de abrir el cuadro de diálogo tenemos el cursor situado dentro de un texto que represente cualquier código de color, el cuadro de diálogo mostrará ese color como valor inicial.

Insertando caracteres especiales

Si en nuestro documento usamos cualquier codificación Unicode, podemos incluir en el texto más de 150.000 caracteres:

% $ & A k © ¶ ½ ÷ ‰ ℤ → ∑ ≠ ⏰ ♋ 😀

Evidentemente, la inmensa mayoría de esos caracteres no están en nuestro teclado. Hay dos formas de introducirlos en un texto:

  • Mediante la posibilidad de copiar y pegar, acudiendo a alguna fuente, como es el caso de la Wikipedia
  • Geany incorpora la posibilidad de introducir un carácter si conocemos su código. Para ello, pulsar Ctrl+Shift+U, y sin soltar estas teclas, introducir el código hexadecimal seguido de Enter.

De todas formas, esto segunda opción no es algo propio de Geany, sino de la biblioteca gráfica GTK, y puede colisionar con otras definiciones de combinaciones de teclas.

Insertar secuencias HTML

En documentos HTML es posible representar un carácter mediante una secuencia especial denominada entidad. Por ejemplo, para un que en un navegador web se muestre un carácter © de copyright, en el texto de la página web podemos representarlo mediante la secuencia &copy;. Es decir, si lo que se descarga es:

Copyright &copy; texto

... lo que se ve en el navegador web es:

Copyright © texto

Pero, cuando estamos diseñando la página web y usando el editor para escribir el texto, ¿como recordar la secuencia que representa cada carácter? Geany nos proporciona una lista de los caracteres más comunes pulsando en el menú Herramientas > Insertar caracteres HTML especiales, lo que abre una ventana de diálogo para seleccionar un carácter e insertar en el texto su secuencia asociada.

Esta opción requiere activar el complemento Caracteres HTML. También permite seleccionar caracteres en el texto y, pulsando sobre Herramientas > Reemplazo HTML, sustituir los caracteres por su correspondiente secuencia HTML. Esto también se puede hacer para todo el documento, no solo el texto seleccionado. En ese caso se respetarán ciertos caracteres que tienen especial significado en la sintaxis HTML:

"   &   <   >   (   )

Podemos definir combinaciones de teclas para hacer estos reemplazos. Usar el menú Editar > Preferencias > Combinaciones.

Texto de pruebas

Al activar el complemento Lipsum, se añade una nueva entrada en el menú Herramientas. Al pulsar sobre esa opción, se insertará un texto de pruebas:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enimad minim veniam, quis nostrud exercitation ullamco laboris nisi utaliquip ex ea commodo consequat. Duis aute irure dolor inreprehenderit in voluptate velit esse cillum dolore eu fugiat nullapariatur. Excepteur sint occaecat cupidatat non proident, sunt inculpa qui officia deserunt mollit anim id est laborum.