Programación de Aplicaciones GNU/Editores de Texto

GNU Emacs editar

GNU Emacs (emacs) es uno de los editores de texto más utilizado por los desarrolladores de GNU, y por otros desarrolladores. Según la definición que hay en su página:

 Emacs is the extensible, customizable, self-documenting real-time display editor

Es decir, emacs es un editor de tiempo-real extensible, personalizable y es autodocumentado. Que sea extensible significa que se pueden añadir funciones nuevas (con el lenguaje emacs-lisp), se pueden añadir modos (ya se verá lo que son), e incluso funcionalidades (e-mail, irc, usenet, etc). Emacs tiene un conjunto de variables (especificación del idioma de uso, color en pantalla, atajos de teclado, etc) que pueden ser modificadas al gusto del usuario. Normalmente las modificaciones son reflejadas en el fichero .emacs que tenemos en nuestro directorio $HOME. Y además es autodocumentado, es decir, el propio emacs tiene un manual de uso genérico, un tutorial de inicio, documentación propia del modo que se esté usando, búsqueda y documentación de funciones, etc. Es decir, simplemente con el programa emacs, podemos aprender emacs sin la necesidad de un libro externo.

GNU Emacs se puede ejecutar tanto en linea de comandos (texto), como en una ventana X. La primera impresión que da el programa es que es muy poco intuitivo, y al principio parece todo muy complicado sobre todo porque tiene un montón de atajos de teclado. Pero todo es empezar. Para ello vamos a explicar algunos puntos muy importantes:

  • Frame - Si ejecutamos emacs bajo X, la ventana que nos da el servidor es el frame. Se especifica asi, para evitar el termino ventana (que se usa en emacs)
  • Ventana - El área de edición que disponemos se puede dividir en varias ventanas, separadas por barras horizontales (status bar) o barras verticales. Para evitar la confusión con frame, en un mismo frame de emacs se pueden tener multiples ventanas de edición.
  • Buffer - Cada ventana tiene vinculado un buffer. Un buffer es una estructura de datos que contiene texto, es donde realmente se edita el texto. Los comandos operan sobre los buffers. Cuando se guarda un fichero, se copia lo que hay en el buffer en el fichero. En editores de pantalla completa como nano o vim, si el archivo es más extenso que el contenido de una pantalla, entonces el contenido del buffer va cambiando a medida que se desplaza el cursor por el archivo.

La analogía de emacs con un editor cualquiera bajo un servidor X (grafico): Una ventana de emacs (ver definición) es como una ventana X de cualquier editor. Y un buffer es el espacio que puede contener texto. Si tenemos abierta una ventana, podemos abrir un fichero y este mostrará su texto en el espacio correspondiente. Para abrir otro fichero, abrimos otra ventana con otro fichero. Por tanto, el servidor gráfico tiene dos ventanas con los dos textos. Pues en emacs es lo mismo, pero lo concentra bajo la misma ventana grafica (servidor X)

La razón de tanto complicación proviene cuando se quieren abrir más de dos ficheros a la vez en modo texto. En modo texto tenemos una única ventana (consola) y para abrir dos ficheros habría que partir la consola en dos. A estas particiones se les denominó ventanas, y al espacio para el texto buffers.

¿Que tiene GNU Emacs que no tengan los demás?. GNU Emacs se basa en los denominados 'modos' (modes). Un modo es como un "plugin", con el cual nos puede resultar más fácil editar un tipo concreto de ficheros. Por ejemplo, un modo muy famoso es c-mode, con el podemos editar ficheros .c más fácilmente. Todos los modos contienen unos comandos con los cuales podemos escribir y modificar el texto de forma más rápida. GNU Emacs tiene unos comandos generales (abrir fichero, guardar fichero, cortar, pegar, buscar, ayuda, etc), y luego tendremos los comandos de los modos (depende del modo).

Por ejemplo, c-mode (modo para ficheros .c), tiene comandos para generar funciones c (plantillas), poner en comentario una zona señalada, buscar la definición de una función, buscar donde se llama a una función determinada, e incluso marcar con colores la sintaxis de C.

A este tipo de modos, se les llama modos mayores y solo puede haber uno activado a la vez. Los modos menores pueden estar activos con un modo mayor, y sirven para ayudar en los formatos de texto (texto justificado, en colores, etc).