emacs

Golden-ratio - redimensión automática de ventanas

Cuando se tienen varias ventanas se suele dar el problema de que tienes que ir-las redimensionando a mano. Yo ni siquiera he encontrado la manera de hacerlo cómodamente con el teclado, por lo que encima tengo que tirar del ratón, lo cual es bastante incómodo. Con este paquete, no hace falta. Se puede ver su comportamiento en este gif. Actualización: El código comentado es el original, el cambiado es el de la variable golden-ratio-exclude-buffer-regexp.

el-get: Otro instalador de paquetes

Alguien se podría preguntar, para que queremos otro, si ya tenemos package.el, que además viene por defecto en emacs? Pues es simple, no todos los paquetes están en melpa, elpa o marmalade. O igual si que están pero queremos usar una rama concreta del repositorio. Hasta ahora yo maneaba esto instalándolo desde terminal con git y ale, a volar. Pero también tenia algún paquete que habia copiado directamente de la wiki de emacs, con el tiempo se me podría haber olvidado de donde lo he sacado.

use-package: Aislar la configuración de cada paquete

Llega el momento en el que en emacs, como buen sistema operativo que es, te das cuenta de que tienes muchos paquetes. Y si no te organizas mínimamente, acabas con la configuración dispersa por todo el fichero. Para evitar esto se puede usar org-babel, como se puede ver en mi configuración. Aún así se puede rizar el rizo con use-package, que además de ayudar a aunar la configuración hace que se configure más rápido, ya que compila todos los archivos lisp que puede.

Programación literaria para sysadmins / devops

Mencioné de pasada el concepto de programación literaria en el articulo de mi configuración de emacs, ahora voy a explicar en que consiste este y cómo usarlo con emacs y org-mode. La definición de la wikipedia al rescate. El paradigma de programación literaria […] permite a los programadores desarrollar sus programas en el orden fiado por la lógica y el flujo de sus pensamientos. Los programas literarios están escritos como una exposición lógica no interrumpida en un lenguaje humano, de forma similar al texto de un ensayo, en el cual se incluye el código fuente tradicional oculto tras macros.

Cliente de GNU social para emacs

En un articulo de @maxxcan ya vimos como usar identica-mode como cliente de emacs. Como su propio nombre indica, está pensado para el entonces centralizado servicio que era Statusnet, cuyo servidor principal era identi.ca. Sin embargo @bob, alias @bashrc, lo ha actualizado, cambiando nombres de funciones y creando otras. Así que procedemos a instalarlo. De momento está en github. igual en un tiempo se anima a meterlo en Elpa. mkdir -p ~/.

Añadir automáticamente símbolos de marcado en org-mode

Quien use org-mode sabrá de la existencia de los símbolos de marcado. Me refiero la cursiva, el subrayado, negrita y el resaltado. Yo, como soy muy vago, he buscado la forma de que al presionar una vez cualquiera de los carácteres de marcado anteriores se inserte el segundo, del mismo modo que electric-pair-mode cierra los paréntesis o los corchetes. Para ello hay que modificar la tabla de sintaxis de org-mode:

Funciones básicas de emacs

A medida que he ido usando Ivy a lo largo de esta semana he visto algunas funciones que vale la pena mencionar aunque no son propias de Ivy cómo tal. Todas las que mencionaré están tanto nativamente cómo en Helm. Hay que recordar que en realidad Ivy no es más que un frontend, se puede poner por delante de cualquier función. Estas funciones les irán especialmente bien a quien no tenga demasiada experiencia en emacs:

Migrar de helm a ivy

Ya hablé hace un tiempo sobre helm. Helm es uno de los paquetes más potentes que tiene emacs y me sigue encantando por ello. Pero tiene un pequeño problema y es que consume demasiado para mi ordenador. ivy, en cambio, está a medio camino de ido y helm, manteniendo los atajos más típicos de emacs. Me refiero al uso del tabulador, que seguramente es a lo que más cuesta acostumbrarse cuando se empieza a usar helm.

Nuevo planet de emacs-es

Esto es un anuncio, poco hay que decir. Entre @maxxcan y yo hemos montado un planet de emacs-es. Con suerte, esto facilitará encontrar nuevos sitios webs y blogs sobre emacs en castellano. Incluso alguna persona que suela escribir en inglés tal vez se anime a hacerlo en castellano. La web es http://planet.emacs-es.org. Varias personas andamos en #emacs-es de freenode, por si eso. También hay un grupo en GNU social, en https://quitter.

Editar archivos de un contenedor docker desde emacs

Fiate tu la cosa más tonta que es, y yo iba tirando de ssh y tramp, lo que es muy incoḿodo. Pero de casualidad, buscando otra cosa en la wiki de emacs, encontré un pequeño snippet que facilita las cosas. (push (cons "docker" '((tramp-login-program "docker") (tramp-login-args (("exec" "-it") ("%h") ("/bin/sh"))) (tramp-remote-shell "/bin/sh") (tramp-remote-shell-args ("-i") ("-c")))) tramp-methods) (defadvice tramp-completion-handle-file-name-all-completions (around dotemacs-completion-docker activate) "(tramp-completion-handle-file-name-all-completions \"\" \"/docker:\" returns a list of active Docker container names, followed by colons.

Escapar símbolos al usar marcado en org-mode

Un caso que puede sonarle a alguien, es usar rutas. Si se escribe en org-mode las palabras /home/drymer/, por ejemplo, pasará que al exportar o en el mismo buffer si tenemos activado org-hide-emphasis-markers, veremos que /home/drymer/ pasa a ser home/drymer, en cursiva y sin la primera y última barra. Por suerte, hay una manera sencilla de escapar estos carácteres usando entidades org (org-entities). Las entidades de org son parecidas al latex.

Buscar en el buffer de emacs

El siguiente paquete es de los buenos. Para buscar en un buffer, se suele usar isearch, que se ejecuta con C-s. Con esto se puede buscar una palabra o varias siempre que estén en orden. Yo echaba en falta el poder buscar mediante expresiones regulares, cómo hace helm. Entonces encontré helm-swoop. Este permitía hacer justo lo que andaba buscando, sólo habia que bindejarlo a C-s y a volar. Pero entonces perdía el comportamiento por defecto de isearch, lo cual no quería hacer, de poder evitarlo.

Introducción a Helm

Helm es un paquete cuya descripción tiene cojones. Yo no soy capaz de traducirlo literalmente. Lo más cercano que puedo decir es que helm es un framework de completado y reducción de selección. Ole. Otra descripción que parece medio humana: Helm es un frontend para otras funciones que modifica su uso e incluso une varias. Técnicamente, los paquetes de helm pueden ser usados por otros frameworks cómo ivy o ido, siempre que o unos o otros se adapten.

Un par de funciones útiles de emacs

No tengo ni idea de elisp, pero aún así me las he apañado para hacer un par de snippets medio útiles para un par de cosas que me hacían falta. Las he hecho basándome en dos articulos, este y este. Seguro que se pueden optimizar. La primera de ellas sirve para insertar cabeceras típicas en org-mode. Le he puesto sólo tres tipos, ya que son los que uso para exportar. Después de evaluar el código y ejecutar la función, mediante ido aparecerá una pregunta que nos dará a escoger entre los distintos tipos.

Poniendo bonito org-mode

org-mode, cómo ya se ha comentado antes, es de lo mejor que hay en emacs y con mucha diferencia. No ya tiene sentido comentar para que sirve, para ver sus posibilidades, se puede mirar en articulos anteriores. Al lío. Los asteriscos son feos Más claro el agua. Para cambiarlos, se usará org-bullet. Esto hace que las cabeceras no empiecen por un asterisco cutre, sinó que empiezan por una bola utf-8. Instalarlo es muy fácil, se puede tirar de elpa y ejecutar M-x package-install RET org-bullet RET.

Escribir prosa en emacs

Hoy inauguro una sección del blog que se llamará cómo el título, “Cosillas de emacs” seguido de un guión y un nombre descriptivo de lo que sea de lo que se habla. A título de curiosidad, nikola crea RSS de las diferentes etiquetas que se usan en el sitio, por lo que si sólo interesa subscribir se a, por ejemplo, la etiqueta emacs, se va abajo del todo, etiquetas, emacs y se verá un índice con todos los articulos y el link al RSS.

GNU social en Emacs

Los que somos usuarios de Emacs solemos estar encantados de usar nuestro programa preferido siempre que podemos. La comodidad y la tranquilidad de estar en un sistema completo y muy bien integrado es uno de los motivos de ese bienestar aunque hay muchos más y cada uno además tiene los suyos propios. Para los que no lo sepan Emacs es mucho más que un editor o un IDE de programación, es un intérprete de elisp (Emacs lisp), por lo que ejecuta todo tipo de programas realizados en este lenguaje.

Torificar magit

Pues me he dado cuenta de que en emacs, y con la programación en general, no me van a salir articulos tan largos cómo tocando temas de administración de sistemas. Y dado que ahora me estoy dedicando más a eso, haré algunos articulos absurdamente cortos pero que creo que pueden ser útiles. Magit es un frontend de git para emacs, y es absolutamente maravilloso. Permite hacer cosas que de hecho aún ni sé ni necesito hacer, lo cual tampoco es tan raro.

Nikola + emacs: Gestionar un blog de contenido estático

Lo de tener un blog siempre es divertido, uno coge, escribe sus mierdas y los demás lo leen o no, eso ya depende de la mierda. Pero oye, siempre se puede intentar, es lo fantástico de internet. Y además es gratis, según cómo se monte. Se puede ir a lo fácil y tirar de wordpress.com o aún peor, blogspot. Entiendo que en ciertos casos hay que tirar del primero (del segundo no hay ningún motivo válido para usarlo, lo siento), no todo el mundo puede o quiere pagar un VPS o puede tener una máquina encendida en casa todo el día.

Emacs y org-mode

Que te aporta usar org-mode? Últimamente veo en algunos sitios que se habla de emacs, cosa que siempre es interesante. Emacs no es un editor de textos, cómo se dice, equivocamente, al compararlo con vi?m, nano o incluso gedit. Para mi emacs es: IDE de desarrollo, para programar y tal Editor de texto sencillo. De hecho, me he quitado nano y lo he puesto como alias a emacsclient org-mode Procesador de textos Publicación de esos textos Listas, muchas listas Y el último punto es el que explicaré a continuación.