

Machón
Configuración de Emacs 1
Configuración de emacs, paso a paso
El objetivo es construir una configuración completa de emacs para todo tipo de tareas. Se va desarrollando un archivo de configuración poco a poco, comprendiendo los diversos aspectos del editor.
El plan de trabajo
Se crea un archivo en org-mode, el modo de edición de texto enriquecido de emacs. Ese archivo, de nombre emacs-configuration-org, creará y actualizará automáticamente los diversos archivos en que consiste la configuración efectiva. Es decir, se crea un archivo que a su vez genera otros archivos, y que incluye información sobre el proceso. Este mecanismo se denomina «programación literaria», inventada por Donald Knuth, y sirve para poder acumular el código y ciertas explicaciones, referencias y documentación, todo en un imsmo lugar. Org-mode incluye ese mecanismo, al que denomina tangle. Crearemos el archivo emacs-configuration-org para que funcione de ese modo, «haciendo tangle» automáticamente al grabar.
Inicialmente el archivo emacs-configuration-org va a generar dos archivos: bin/e, un script o programa que «lanzará» el emacs; y etc/init.el, el archivo de configuración que se carga y ejecuta cada vez que emacs se inicia.
Creación de la estructura de carpetas del proyecto
Se crea una carpeta de nombre Projects/emacs. Desde un terminal:
mkdir -p ~/Projects/emacs
Nos desplazamos a esa carpeta:
cd ~/Projects/emacs
Una vez en ella, creamos el resto de la estructura:
mkdir ./src ./bin ./etc ./var
Podemos comprobar que se ha creado la estructura
tree .
El resultado debe ser algo como:
Projects/
└── emacs
├── bin
├── etc
├── src
└── var
El archivo src/emacs-configuration.org
El archivo principal que dará origen a los demás es emacs-configuration.org, dentro del directorio src.
1: 2: 3: 4: 5: * Configuración de Emacs 6: Archivo de documentación y generación de la configuración de emacs. 7:
El archivo se inicia con el título. A continuación, una línea para activar la generación automática de archivos cuando se graba. Finalmente, la definición de los datos necesarios relativos al archivo generado principal para bloques de tipo emacs-lisp, que será init.el y estará en la ruta correspondiente: ../etc/ (hay que tener en cuenta que el archivo que se está escribiendo está en Projects/emacs/src/, por lo tanto para llegar a Projects/emacs/etc/ hay que indicar ../etc/). Con :mkdirp yes se indica que deben crearse los subdirectorios indicados que no existan.
Inmediatamente después se incluye un bloque especial de programa en bash, que será el comando utilizado para iniciar el emacs:
** Archivo de ejecución de emacs Con este script de bash se inicia el emacs, ajustando los directorios y configuraciones. El script se aloja en el directorio =bin/=, y la sintaxis de uso es: #+BEGIN_EXAMPLE bin/e archivo_a_editar.txt #+END_EXAMPLE #+begin_src bash-script :tangle ../bin/e :mkdirp yes :tangle-mode (identity #o755) #!/bin/bash # Emacs startup script ################################################# # vars emacs_bin=/usr/bin/emacs emacs_base=~/Projects/emacs emacs_home=${emacs_base}/var emacs_init_el=${emacs_base}/etc/init.el bin=${emacs_bin} ################################################# # run basic emacs ${bin} \ --init-directory=${emacs_home}\ --debug-init\ -q --no-site-file --load "${emacs_init_el}"\ $@ & #+end_src
En este bloque se incica que debe grabarse como ../bin/e, y que será ejecutable (permisos 0755). También se indica que si ../bin/ no existe, debe crearse.
El programa, escrito en bash, simplemente inicia el programa emacs utilizando la configuración que se va a generar en ../etc/init.el, y utilizando como base interna el directorio ../var/. En ese directorio se almacenarán todos los paquetes de emacs que se instalen, así omo todo tipo de archivos auxiliares.
También se indica --debug-init al iniciar emacs, para se notifique cualquier error al arrancar.
Por último, un nuevo bloque de código en emacs lisp será el inicio de la configuración de emacs:
** Configuración de emacs El archivo =etc/init.el= se cargará al iniciar emacs. #+begin_src emacs-lisp ;; Emacs Configuration (message "Hello World!") #+end_src
Este bloque no tiene datos para su grabación en archivo separado, por lo tanto utiliza los datos por defecto especificados al principio: se grabará en ../etc/init.el
primera generación de archivos
Dado que todavía no s eha creado el sistema de generación o actualización e archivos para cada vez que se grabe, se debe realizar todo a mano por el momento. En emacs, pulsar las teclas M-x y luego teclear org-babel-tangle, RETURN . En la consola se puede comprobar qu elos dos archivos se han creado:
tree .
El resultado debe ser algo como:
Projects/
└── emacs
├── bin
│ └── e
├── etc
│ └── init.el
├── src
│ └── emacs-configuration.org
│ └── emacs-configuration.org~
└── var
El archivo emacs-configuration.org~ es una copia de seguridad que emacs genera automáticamente al editar un archivo.
Se puede salir de emacs con C-x C-c, e iniciarlo de nuevo, pero ya con nuestra configuración, con:
bin/e src/emacs-configuration.org
UI
La pantalla aparece partida por la mitad, y en su parte inferior muestra un texto de bienvenida. Para desactivarlo, creamos una sección «UI», en el archivo de configuración, dedicada a los aspectos de la interacción con el usuario.
** UI: interacción En este bloque se configuran los aspectos visuales y de interacción con el usuario. #+begin_src emacs-lisp ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; UI ;; inhibit initial screens (setq inhibit-splash-screen t inhibit-startup-screen t) #+end_src
(defun hello () "Says hello." (message "Hello, world!"))
