Como configurar Emacs

Introducción

Como ya debemos saber Emacs es más que un editor por lo que algo que llama la atención al principio es la cantidad de paquetes que hay para absolutamente de todo. El tema es que la forma de configurar Emacs es gracias a un único fichero en donde en modo texto plano añadimos las distintas líneas de configuración. Los ficheros en los que podemos escribir la configuración son .emacs, .emacs.el o en el directorio .emacs.d/ en el fichero init.el. En el caso de Spacemacs usamos el fichero .spacemacs

El asunto es que por diversos motivos, para algunos les parecerá bien o para otros mal todo la configuración está en un único archivo por lo que si eres como yo que usas Emacs para casi todo al final puedes encontrarte con un fichero que supere fácilmente las 500 líneas o como en mi caso superen las 1000 líneas.

Por supuesto esto es Emacs y soluciones para eso hay tantas como usuarios tiene el propio Emacs ya que si de algo se caracteriza este Editor es su gran configuración y adaptabilidad a todas las necesidades.

Configuración en Emacs

Por ello, para configurar tu Emacs puedes recurrir a muchas estratégias diferentes. Desde no preocuparte e ir llenando el fichero de configuración con líneas y líneas de configuración, unas cuantas para la configuración propia del editor y luego otras muuchas más para cada uno de los paquetes que instalamos.

La forma más obvia de solucionar esto es simplemente tener el archivo bien ordenado, comentado (recordad que el fichero de configuración es un fichero de lisp al que se le puede añadir comentarios).

Otra forma es usar un fichero de texto org explicando bien lo que hace cada línea de configuración, incluyendo entre un bloque de código la configuración y luego exportándolo a un único fichero de configuración gracias a babel.
Esto lo explicaré más adelante aunque hay gran cantidad de artículos que ya lo explican en el Planet Emacs en español.

Aún así os voy a dejar un listado de configuraciones y forma de hacerlo en los siguientes enlaces. Si tenéis dudas no dudad en ponerlo en los comentarios y si es necesario haré un artículo más extenso al respecto.

Aquí os dejo enlaces a configuraciones interesantes:

  1. Configuración de Aaron Bedra
  2. Configuración de Sriram Krishnaswamy
  3. La configuración de Dennis Ogbe
  4. Configuración de Caolan McMahon
  5. La configuración de Justin Abrahams
  6. La configuración de Jorge Javier Araya Navarro
  7. La configuración de Miguel Pinia
  8. La configuración de Pipa Llena
  9. La configuración de Bad Daemons

Configuración en Spacemacs

En Spacemacs en cambio la configuración va en un fichero llamado .spacemacs y este fichero va dividido en secciones que están englobadas entre paréntesis y además hay muchos comentarios que explican qué hace cada sección.

Por ejemplo hay una sección donde añadimos las capas y opciones de éstas. En otra sección podemos añadir paquetes en concreto y en otra podemos incluso prohibir ciertos paquetes que se instalen por defecto con una capa y que o no nos interesen o nos den problemas.

Hay muchas más secciones donde podemos configurar el tema, tipo de letra y tamaño y luego ya configuraciones concretas de paquetes en concreto que suelen ir bien en la sección user-init o user-config.

Como organizo mi configuración

Bueno yo encontré un método algo distinto aunque también quiero combinarlo con la forma de trabajar de documentar la documentación con org-mode y exportarlo con babel.

De momento lo que he conseguido es diseccionar el fichero de configuración en muchos ficheros cortos y con un nombre descriptivo en un directorio dentro del directorio .emacs.d/ que ha llamado config. Aquí podéis ver un ejemplo de ese directorio:

Directorio con los ficheros de configuración

 

Bien para que esto funcione tenéis que añadir la siguiente configuración en vuestro fichero de configuración de Emacs

(load "~/.emacs.d/config/load-directory")

(load "~/.emacs.d/config")

Bien como vemos ahí cargamos el fichero load-directory dentro del directorio donde vamos a tener nuestros ficheros de configuración y posteriormente cargamos, gracias a que tenemos ya cargada una función llamada load-directory del fichero anterior, todos los ficheros de configuración.

Ahora vamos a ver que contienen ese fichero:

(defun load-directory (directory)
  "Load recursively all `.el' files in DIRECTORY."
  (dolist (element (directory-files-and-attributes directory nil nil nil))
    (let* ((path (car element))
           (fullpath (concat directory "/" path))
           (isdir (car (cdr element)))
           (ignore-dir (or (string= path ".") (string= path ".."))))
      (cond
       ((and (eq isdir t) (not ignore-dir))
        (load-directory fullpath))
       ((and (eq isdir nil) (string= (substring path -3) ".el"))
        (load (file-name-sans-extension fullpath)))))))

Como vemos hemos creado la función load-directory que carga todos los ficheros de configuración que terminen con la extensión .el

Como se hace en Spacemacs

Como ya he dicho con anterioridad el fichero de configuración de Spacemacs es el llamado .spacemacs y es un fichero que de por sí está dividido por secciones, para una mejor comprensión y con muchos comentarios.

Para que esto funcione lo único que tenemos que hacer es lo mismo que lo ya explicado solo que con dos salvedades:

  • El código (load “/.emacs.d/config/load-directory”) va dentro de la sección user-init
  • El código (load “/.emacs.d/config”) va dentro de la sección user-config

Además añadimos si añadimos Git…

El tema de tener un directorio en concreto donde van todos mis ficheros de configuración es muy útil para mí no solo porque lo tengo todo en un único directorio y entre pequeños ficheros bien determinados sino que además ese directorio en concreto lo tengo en un repositorio de Github por lo que puede acceder a él desde donde quiera y demás ventajas de usar un gestor de versiones.

Mi repositorio en particular está en mi github

 

Comparte esto:
Share
admin Written by:

4 Comments

  1. Ahora mismo ando creando una configuración nueva para mi Emacs, cogiendo cosas de aquí y de allá. A ver qué me sale 🙂

  2. Ahora mismo ando creando una configuración nueva para mi Emacs, cogiendo cosas de aquí y de allá. A ver qué me sale 🙂

    (Creo que el comentario anterior no se envió bien, fallo mío por darle a enter demasiado pronto)

    • admin
      diciembre 8
      Reply

      Espero que te sea de utilidad.

      Se han enviado los dos comentarios. ¿te borro el anterior?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *