Bad Daemons: Múltiples cursores en emacs

Este es un paquete al que cuesta cogerle el punto. Pisa un poco las funcionalidades de las macros, es un poco especialito y hay que tener un poco de imaginación al usarlo, pero una vez le pillas el truco es muy útil.

El paquete que muestra el siguiente gif es de multiple-cursors, y hace exactamente esto, abrir múltiples cursores en emacs. Lo he estado usando últiamamente que he tenido que he estado usando Terraform en el trabajo, y se presta al uso de este paquete. Véamos un ejemplo:

multiple-cursors.gif

La primera función es mc/mark-next-like-this, que crea un cursor en el siguiente elemento que es igual al que se está seleccionando. Tiene su equivalente mc/mark-previous-like-this para lo mismo pero para atrás. La siguiente función es mc/mark-next-lines que marca la siguiente linea sin más. Igual que la anterior, tiene su equivalente inverso, mc/mark-previous-lines. Y por último, el más útil, como todos los dwim, Do What I Mean. Se comporta de forma distinta según desde dónde se ejecute. Si se selecciona una región, introduces una cadena de carácteres y inserta cursores en esas regiones. En otra región hará otra cosa.

En la fabuloso página de Emacs Rocks hay un podcast sobre este paquete. Son solo tres minutos y muestra otro ejemplo de como usar este modo.

-1:-- Múltiples cursores en emacs (Post drymer)--L0--C0--December 11, 2017 07:30 AM

Maxxcan's Site: Mitos sobre GNU Emacs

Pre-Introducción Este artículo posiblemente es con el que debería haber empezado la serie de post…
-1:-- Mitos sobre GNU Emacs (Post admin)--L0--C0--December 07, 2017 05:34 PM

Onda Hostil: Lo que he aprendido: diagramas en Org mode con Ditaa

¡He aprendido cosas nuevas de Org! ¡Ahora puedo pintar grafiquillos! Cómo me encanta. Me encontré con Ditaa leyendo el curso de Emacs de La pipa plena, un gran recurso para aprender, luego me puse yo a hurgar y ahora me toca escribir lo aprendido para que no se me olvide. Vamos a ello.

Ditaa

Ditaa es una pequeña utilidad para la terminal que permite convertir diagramas hechos en ASCII art en imágenes. Está escrita en Java y se distribuye como un archivo jar por lo que es totalmente portable1. Es además un programilla libre ya que lleva una licencia GPL.

Si tenemos el jar necesitamos Java para poder crear diagramas desde la terminal, pero no nos preocupemos, usarlo es tan fácil como llamar a Java con la opción -jar diciéndole dónde está Ditaa y qué queremos que haga:

java -jar RUTA/ditaaXXX.jar OPCIONES ARCHIVO

donde XXX es el número de versión y ARCHIVO el lugar donde está el dibujito ASCII, lo demás creo que se explica solo. Por poner un ejemplo, si le pasamos a Ditaa un archivo que contenga esto:

+----------------+       +----------------+
|                |       |                |
| Primer bloque  +------>| Segundo bloque |
|                |       |                |
+----------------+       +----------------+

Nos creará este gráfico:

figura

Unirlo a Emacs

Así visto Ditaa parece un poco absurdo, pero ¿y si lo unimos al modo artista de Emacs? Más aun, ¿y si le decimos a Org que nos ejecute el código de Ditaa? ¡Nos aparecerá un gráfico perfectamente integrado en nuestro documento!

Cuenta la leyenda que Ditaa viene en el propio Org, concretamente el jar debería estar en contrib/scripts, pero yo no lo tenía, no sé por qué, así que tuve que decirle a Emacs dónde estaba añadiendo lo siguiente al archivo de configuración:

;; Ruta hasta el jar de Ditaa
(setq org-ditaa-jar-path "RUTA/ditaaXXX.jar")

Luego tuve que permitirle a Org ejecutar Ditaa, para ello añadí también al archivo de configuración:

;; Permitir a org-mode que ejecute Ditaa
(org-babel-do-load-languages
(quote org-babel-load-languages)
(quote (
(ditaa . t)
)))

Con esto pude usar Ditaa desde dentro de Org.

Bloques Ditaa en Org

Ahora ya se pueden añadir bloques de código de Ditaa como si fuera cualquier otro lenguaje de programación y ejecutarlos luego para que nos genere la imagen. Yo activo el modo artista (M-x artist-mode), pinto mi dibujo y luego lo rodeo con los delimitadores de código fuente de Org. Cogiendo el ejemplo anterior:

#+BEGIN_SRC ditaa :file figura.png :cmdline -o -e UTF8 -r

+----------------+       +----------------+
|                |       |                |
| Primer bloque  +------>| Segundo bloque |
|                |       |                |
+----------------+       +----------------+

#+END_SRC

Al ejecutar el bloque de código con C-c C-c sale una línea de resultados con un enlace a la figura recién creada, cuyo nombre le hemos dado tras :file:

#+RESULTS:
[[file:figura.png]]

Por cierto, detrás de la etiqueta :cmdline le metemos las opciones que añadiríamos al comando en la terminal, en este caso yo le he pedido que sobreescriba la imagen si ya existe (-o, overwrite), que use codificación UTF8 (-e, encoding) y que use bordes redondeados (-r, rounded).

Lo mejor del tema es que si exportamos el documento a pdf o HTML lleva consigo la figura, con lo que resulta bastante práctico para tomar notas y luego producir un resultado vistoso.

¿Qué os parece el truquillo? A mí me hace amar más el modo Org.

Referencias

Ditaa

Curso emacs 20. Gráficos con org-mode (ditaa y plantuml) en La Pipa Plena

ASCII art diagrams in Emacs org-mode

Setting up Ditaa in Org-mode en StackExchange


Suena mientras pienso:


  1. También está en los repositorios pero yo voy a usar el archivo portable porque últimamente funciono en dos sistemas operativos y prefiero una configuración a dos. 

-1:-- Lo que he aprendido: diagramas en Org mode con Ditaa (Post Ondiz)--L0--C0--December 06, 2017 05:00 PM

Maxxcan's Site: Como configurar Emacs

Introducción Como ya debemos saber Emacs es más que un editor por lo que algo…
-1:-- Como configurar Emacs (Post admin)--L0--C0--December 03, 2017 06:37 PM

Quijote Libre: Video introducción a GNU Emacs de Derek Banas

Gracias al gran sitio que es  Irreal, una de las mejores fuentes de información sobre Emacs que conozco, he podido ver este video de Derek Banas (@NewThinkTank). Probablemente sea un poco escaso para usuarios con experiencia, pero es indudable que es una buena aproximación a nuestro querido Emac y por eso la dejo aqui. No … Continuar leyendo "Video introducción a GNU Emacs de Derek Banas"
-1:-- Video introducción a GNU Emacs de Derek Banas (Post Quijote Libre)--L0--C0--November 21, 2017 11:00 AM

Onda Hostil: Lo que he aprendido: centralizar archivos de autoguardado de Emacs

¡Hoy traigo un truquillo rápido! Como sabéis Emacs va dejando por ahí copias de seguridad (archivo~) y archivos de autoguardado (#archivo#) de lo que abrimos y editamos. Esta es una funcionalidad que me ha salvado el pellejo en más de una ocasión pero no me gusta tener mierdecillas extendidas por todo mi ordenador. Hoy por fin he descubierto como mandarlos todos a otra carpeta, en concreto a la carpeta temporal. Para ello he añadido lo siguiente al archivo de configuración:

(setq backup-directory-alist
`((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
`((".*" ,temporary-file-directory t)))

Para averiguar dónde anda la carpeta temporal hacemos C-h v (Describe variable) y le decimos que describa temporary-file-folder. También se le puede dar otra ruta que nos parezca más adecuada, claro.

Al loro porque usamos acentos graves y no apóstrofes en este caso porque solo queremos que cite las cosas que van antes de la coma, no hagáis como yo que estaba convencida de que había copiado mal y no entendía por qué no funcionaba.

Lo interesante del tema es que aunque mandemos los archivos a otra carpeta seguimos recuperándolos como de costumbre con M-x recover-file. ¡Qué listo es Emacs!

Por cierto, aparte de estos, hay unos archivos de interlocking que aparecen al abrir un archivo y cuyo nombre empieza por .# seguido del nombre del archivo abierto. Sirven para evitar que dos programas editen el archivo al mismo tiempo y no tienen nada que ver con estos que tratamos hoy. ¡No nos liemos! (Como ya he hecho yo)

Bueno, pues no os cuento nada más por hoy, estamos pronto.

Referencias

Keep Backup and Auto-save Files Out of the Way

GNU emacs backup files

18.3.4 Protection against Simultaneous Editing en el manual de Emacs


Grupos que descubro gracias al Sótano 😀


-1:-- Lo que he aprendido: centralizar archivos de autoguardado de Emacs (Post Ondiz)--L0--C0--November 17, 2017 10:05 PM

Onda Hostil: Lo que he aprendido: personalizando cosillas en org mode

¡Estoy a tope con el modo org! Me hace ser más eficiente y organizada y eso que todavía no le he sacado mucho jugo. Hoy quería poner por aquí algunas opciones de configuración para el modo org que he añadido a mi archivo de inicio de Emacs. ¡Así me contáis cómo hacéis vosotros!

Todos ellas las he activado con setq que en mi proceso de entender lo que copiopego de Internet en mi archivo de configuración he descubierto que asigna valores a variables y que el típico t significa True y el nil False. En fin, ¡veamos cosas!

Modo indentado

Lo primero que he activado es el modo limpio o indentado, es decir, el que en lugar de ponernos estrellitas para los encabezados nos los indenta según su nivel para que veamos todo más claramente. Con él activado nosotros escribimos como siempre y org nos organiza las listas, los títulos y demás. Bastante útil.

Se activa estableciendo org-startup-indented como True:

;; Modo indentado
(setq org-startup-indented t)

Fecha de cierre de las tareas

Otra opción que he activado es que me aparezca cuándo he cerrado una tarea al pasarla al estado DONE:

;; Marcar fecha de tarea realizada
(setq org-log-done 'time)

Ahora cuando voy hasta DONE con C-c C-t debajo me aparece una línea en la que pone CLOSED y la fecha de conclusión en morado.

Cambiar la secuencia de palabras clave

Como tener solo estados de TODO y DONE me parecía poco para organizarme, he añadido dos más: un CHECK para las tareas que están hechas pero requieren algún tipo de verificación o corrección externa, y CANCELLED para las tareas que por algún motivo no seguirán adelante pero que quiero tener localizadas.

Podría añadir estas palabras clave en los archivos en que las necesite pero como me parecen útiles he oreferido añadir la configuración directamente en el archivo de inicio:

(setq org-todo-keywords
'((sequence "TODO" "CHECK" "|" "DONE" "CANCELLED")))

Gracias a estas líneas al hacer C-c C-t se rula por esos estados.

Asignar colores a las palabras clave

Una vez generadas palabras claves nuevas pensé que estaría bien asignarles colores. Para ello se usa la variable org-todo-keyword-faces con algún color que Emacs entienda:

(setq org-todo-keyword-faces
'(
("TODO"   . (:foreground "firebrick2" :weight bold))
("CHECK"  . (:foreground "orange1" :weight bold))
("DONE"   . (:foreground "forestgreen" :weight bold))
("CANCELLED"  . shadow)
))

Bueno, hasta aquí hemos llegado hoy. ¿Qué más me recomendáis cambiar? 🙂

Referencias

FAQ de org

Colors Available to Emacs

Customizing Emacs en Emacs Beginner’s How to


-1:-- Lo que he aprendido: personalizando cosillas en org mode (Post Ondiz)--L0--C0--November 12, 2017 08:00 AM

Onda Hostil: Lo que he aprendido: lista de tareas en org mode

¡Llegó el momento en el que el modo org y Ondiz se ven las caras! Después de una temporada usando Emacs me ha picado el gusanillo y aprovechando que tenía que tener controladas mis tareas del curro, me he puesto a investigar org. Hoy os hablaré de mis primeros pasos en él, que consisten básicamente en escribir una lista de tareas. ¡Empecemos!

El modo org

El modo org es un modo para tomar notas, escribir, planear proyectos, manejar listas de tareas, gestionar el tiempo, publicar documentos y muchas otras cosas que se nos ocurran. Lo creó el profesor de astronomía Carsten Dominik cuando intentaba organizar mejor sus notas. Su idea era sacar directamente las tareas a realizar de las notas tomadas, por ejemplo, en una reunión, para que las tareas y las notas en lugar de ser dos cosas independientes se retroalimentasen.

Su primer paso fue mejorar el modo outline añadiendo indentación para que fuera más sencillo de leer y facilitando el manejo de los elementos de las listas. A partir de ahí fue ganando funcionalidad hasta convertirse en la herramienta multiusos que es ahora.

Una curiosidad de este modo es que su mascota es un unicornio, en su web dan varias explicaciones mi favorita es esta:

Org-mode is meant to show you the way, and an animal with two horns can not do this very well, can it?

Veamos ahora cómo hacer una lista de tareas sencilla.

Una lista de tareas

Antes de ponernos con la lista en sí debemos saber un par de cosas del modo org:

  • Cada documento comienza con los datos (autor, fecha …) y las opciones queremos establecer (indentación, idioma …)
  • Org tiene un lenguaje de marcado propio (similar a Markdown) donde los títulos se indican con asteriscos

Una vez entendido esto, solo nos queda saber que cualquier título se convierte en tarea si empieza por TODO, por ejemplo, convertimos un encabezado de segundo nivel en una tarea así:

** TODO Aplicar cambios

Debajo de esta tarea podemos seguir escribiendo al igual que si fuera un título normal y corriente. Incluso es posible añadir encabezados de nivel tres o superior que sean a su vez tareas. Luego para aclararnos mejor podemos colapsar los encabezados uno a uno con TAB (todos ellos con Shift+Tab) o moverlos de sitio con M-flechas.

Una vez acabada la tarea, con C-c C-t cambiamos su estado a DONE y se pintará en verde y nos hará sentir muy satisfechos. Si queremos que aparezca la fecha en la que cerramos la tareas podemos hacer uso de las opciones de las que os hablaba antes y añadir lo siguiente al inicio del documento:

#+STARTUP: logdone

Así, cuando marquemos la tarea como hecha, org nos añadirá una línea con la fecha de conclusión. Si nos gusta, podemos cambiar este comportamiento para siempre directamente en el archivo de configuración con:

(setq org-log-done 'time)

Otro tema que me mola es poder dividir las tareas grandes en listas con casillas para marcar, que tienen la sintaxis típica que nos solemos encontrar por ahí y cuyas casillas podemos marcar y desmarcar con C-c C-c (check):

- [X] Tarea 1
- [ ] Tarea 2

Estas listas de casillas pueden anidarse y si añadimos [%] o [/] a la principal org nos mostrará cómo de avanzada va la tarea, o bien en porcentaje o en fracción.

Esta es la funcionalidad más básica y con la que he estado jugando estos días pero tenemos además montones de opciones. Os cuento unas pocas:

  • Añadir más estados para las tareas usando las variables del documento, rulará por ellos cuando hagamos C-c C-t:
#+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
  • Añadir prioridades A, B (por defecto) o C a nuestras tareas:
*** TODO [#A] Escribir entrada en el blog
  • Enlazar webs y archivos de nuestro ordenador:
[[RUTA][descripción]]

[[file: RUTA][descripción]]
  • Incluir tablas que se adaptan al contenido y en las que se puede usar la calculadora

  • Añadir tareas a la agenda con C-c C-s (schedule), que luego podremos ver en una vista diaria o semanal

Como veis podemos complicar esto hasta el infinito o mantenernos en la superficie. De hecho, una parte de su filosofía consiste en que cada cual adapte org a su estilo, pero que sea siempre posible usar solo lo simple. Yo de momento me siento muy feliz habiendo sido capaz de crear listas de este estilo:

tareas

Por cierto, una cosa curiosa es que las combinaciones de teclas de org dependen del contexto, es decir, la misma combinación tiene diferente significado según dónde la usemos, reduciendo el número de combinaciones que tenemos que memorizar.

En fin, me gusta como está pensado este modo, se adapta a mi forma de trabajar, supongo que porque proviene del mundo académico. ¡Parece que nunca más voy a tener que usar otro programa que no sea Emacs!

Os dejo con una charla que dio su creador en Google:

Referencias

Página de Org mode

Recursos de GNU Emacs y org-mode de Quijote Libre

Some tips for learning Org Mode for Emacs de Sacha Chuan

Get Organized with Emacs Org-mode en Linux Journal

Org-mode basics VI: A simple TODO list en Pragmatic Emacs

Org Mode – Organize Your Life In Plain Text!

Introduction to Literate Programming


-1:-- Lo que he aprendido: lista de tareas en org mode (Post Ondiz)--L0--C0--November 05, 2017 09:30 PM

Quijote Libre: GTD con org-mode: Planteamiento inicial

Vamos a ver si empezamos, si es que este bajón otoñal me deja, y lo primero de todo pediros disculpas por el nuevo cambio de la plantilla, pero no me estaba gustando nada el funcionamiento de los títulos en la nueva y hasta que no me maneje mejor para tocarle las tripas a WordPress creo … Continuar leyendo "GTD con org-mode: Planteamiento inicial"
-1:-- GTD con org-mode: Planteamiento inicial (Post Quijote Libre)--L0--C0--November 01, 2017 06:18 PM

Onda Hostil: Lo que he aprendido: el modo flycheck de Emacs

¡Hola, hermanos! Con el rollo de automejorarme he estado jugando un poco con el modo Flycheck de Emacs, un cacharro que nos mira el código y nos avisa de errores, malas prácticas y demás. Descubrí que existía gracias al blog de Maxxcan (que es parte del Planet Emacs en español como yo 😀 ) y fue tipo ¡oh! eso debo probarlo y hasta ahora. Venga, os cuento.

Flycheck

Flycheck es un comprobador de sintaxis para Emacs creado para sustituir a Flymake, el que viene de fábrica. Su función es detectarnos problemas en el código como paréntesis sin equilibrar, espacios al final de línea o problemas de estilo. Solo nos hace sugerencias subjetivas pero nos ayuda a ser más conscientes de lo que escribimos.

Soporta muchos lenguajes, ya que depende de otros programas externos para hacer la verificación, él solo aporta una interfaz cómoda. Lo que no soporta es Windows, aunque yo lo he usado igualmente y me ha funcionado igual que en GNU/Linux. A mí me interesa por LaTeX, Markdown, Python y Haskell (sobre todo por los dos primeros) así que voy a poner de ejemplo el caso de LaTeX.

Verifiquemos nuestro LaTeX

Para que Flycheck pueda sacar faltas a nuestro LaTeX necesitamos lacheck, una herramienta para detectar problemas comunes en LaTeX. Podemos descargarlo desde el repositorio de TeXLive o de los repositorios de nuestra distro. Una vez instalado abrimos un documento de LaTeX y activamos el modo con M-x flycheck-mode. Veremos unas marquitas en las líneas que tienen problemillas y abajo en el minibuffer nos dirá qué es lo que pasa. También podemos ver todos errores juntos como se ve en la imagen:

flycheck

Si nos gusta mucho mucho el modo podemos activarlo para todos los casos añadiendo lo siguiente al archivo de configuración:

;; Activar flycheck
(add-hook 'after-init-hook #'global-flycheck-mode)

Es chachi porque es listo y él solo averigua que verificador tiene que usar y lo usa si está disponible. Qué majo.

¿Y el Markdown?

Pues para Markdown tenemos Markdown lint que funciona exactamente igual pero que hay que instalar con gem:

[sudo] gem install mdl

Ahora cuando abramos un Markdown nos avisará de nuestras chapucillas. ¡Y hasta aquí hemos llegado! Me contáis a ver qué tal.

Referencias

Flycheck

Markdown lint

Manpage de Lacheck


-1:-- Lo que he aprendido: el modo flycheck de Emacs (Post Ondiz)--L0--C0--October 24, 2017 08:55 PM

Maxxcan's Site: Qué es spacemacs

la web de spacemacs
1 Introducción Mi idea era seguir haciendo artículos básicos sobre Emacs, pero viendo que ya…
-1:-- Qué es spacemacs (Post admin)--L0--C0--October 17, 2017 03:52 PM

nba - GNU's Rock: Emacs, configuracion de verano

todo empezo una tarde calida cuando cambie de distro a manjaro, abri el emacs para ponerme a programar “el morg” (que esta en go) y aparecia un mensaje de error muuu largo, informando que el flycheck (un modo para verificar el codigo mientras se va escribiendo) no localizaba la ruta al ejecutable del flycheck-go. Como no encontraba el origen del problema y queria tunear el emacs, me propuse abandonar el sistema que tenia para agregar extensiones al emacs, el cual consistia basicamente en buscar un paquete, clonar el repositorio del codigo y probar hasta se cargara a lo bestia sin tirar del sistema de paquetes del que dispone emacs… je, como decir que no me gustan las cosas automagicas que hacen las cosas sin que me entere, pero bueno, siendo emacs me dare el lujo de ser un poco mas permisivo
-1:-- Emacs, configuracion de verano (Post )--L0--C0--September 29, 2017 12:47 AM

nba - GNU's Rock: Run Scheme

En el anterior post (cronologico del blog) comente algunos interpretes de Scheme. Ya que en Emacs tenemos un interprete de elisp nativo, supuse que habria un metodo sencillo, para correr Scheme, pero, por que correr todo un interprete cuando se puede echar mano del interprete del sistema de turno y powerizarlo con el incomparable Emacs, o si, hasta Gulie que en terminal era insipido, se vuelve Sexi! Todos los interpretes adquieren historial, hasta los que no lo tenian!
-1:-- Run Scheme (Post )--L0--C0--August 20, 2017 11:42 PM

nba - GNU's Rock: Por que GNU Emacs?

Si el tiempo antes de precindir de interfaces para interactuar con los computadores se extiende lo suficiente, Emacs, terminara por ser un sistema operativo autosuficiente coloca una pista de sonido, relajate y disfruta de este post al estilo “lo que otros IDEs no quieren que sepas”, “la increible historia de emacs, no podras creer el final”, “Emacs el editor que no esperabas”, … 〜( ̄△ ̄〜) he, pero es que yo utilizo (vim|VS|atom|eclipse|nano|…) y no necesito un editor viejuno y raro!
-1:-- Por que GNU Emacs? (Post )--L0--C0--July 02, 2017 05:26 PM

Maxxcan's Site: Programación literaria para Devops con Emacs (1 parte)

programación literaria
  Aquí os dejo mi conferencia sobre Programación Literaria para Devops. Posteriormente subiré el material…
-1:-- Programación literaria para Devops con Emacs (1 parte) (Post admin)--L0--C0--June 13, 2017 10:17 AM

Bad Daemons: Ansible en emacs

Ultimamente he estado toqueteando bastante Ansible. Para quien no lo conozca, Ansible es un gestor de configuraciones. Permite instalar y configurar programas y configuraciones en un ordenador o en 1.000. Por eso se usa en el ámbito de la Integración Contínua. Pero bueno, ya hablaré más en profundidad de ello en otro articulo.

Por ahora hablaré de lo que uso para editar playbooks. Uso yaml-mode, ansible-doc y ansible-vault-mode. Por suerte los playbooks de Ansible se escriben en el maravilloso formato Yaml, muy cómodo para editarlo. El modo no ofrece mucho más que la indentación y los colores, pero tampoco hace falta mucho más:

(use-package yaml-mode
  :ensure t)

ansible-doc lo que hace es ofrecer el comando de línea ansible-doc pero desde emacs, con helm o ivy si se usa alguno. La primera linea de la sección config enlaza el ansible-doc-mode al yaml-mode, por lo que cuando se edite yaml, solo hay que ejecutar C-? y se accederá a los docs. Por defecto la primera vez que se lo llama tarda bastante en responder, por que guarda la respuesta para que las siguientes veces sea más rápido. Yo lo que he hecho es añadir la segunda línea, que hace que este cacheo se produzca al iniciar emacs. Tarda más en arrancar semacs, pero dado que solo lo arranco una vez cada muchas semanas, no me resulta un problema.

(use-package ansible-doc
  :ensure t
  :config
  (add-hook 'yaml-mode-hook '(lambda () (ansible-doc-mode)))
  (progn
    (save-window-excursion (ansible-doc "a10_server"))
    (kill-buffer "*ansible-doc a10_server*")))

Y por último, ansible-vault. Este paquete es otro wrapper de su equivalente de terminal. Para quién no lo sepa, vault es la forma de gestionar variables sensibles en ansible. Se puede usar de dos formas, con una contraseña genérica o una por proyecto. Para lo primero, solo hay que crear un fichero ~/.vaut_pass. Para lo segundo, hay que hacer uso del fichero .dir-locals.el. Este fichero permite concretar variables por directorio, como su nombre indica. Es algo propio de emacs, no de ansible-vault. Por lo tanto, en ese fichero habria que poner algo como esto:

((yaml-mode
  (ansible-vault-pass-file . "~/.ansible-vault/custom_vault_pass")))

La configuración del modo en si es la siguiente:

(use-package ansible-vault
  :ensure t
  :config
  (defun ansible-vault-mode-maybe ()
    (when (ansible-vault--is-vault-file)
      (ansible-vault-mode 1)))
  (add-hook 'yaml-mode-hook 'ansible-vault-mode-maybe))

Con esto, se hace mucho más facil y cómodo editar playbooks de Ansible. Y si además queremos visitar la página de la documentación oficial, siempre se puede usar counsel-dash.

-1:-- Ansible en emacs (Post drymer)--L0--C0--June 06, 2017 06:16 PM

Quijote Libre: Aprendiendo GNU Emacs y org-mode (VIII)

“Capturar” en org-mode Una de las principales facilidades que me he encontrado en GNU Emacs, y en particular en org-mode, es la sencillez de almacenar la información en texto plano. Así que para intentar quitarme el mono y recuperar ritmo vamos hoy a ver una importante funcionalidad de org-mode, sin profundizar demasiado en ella eso … Continuar leyendo "Aprendiendo GNU Emacs y org-mode (VIII)"
-1:-- Aprendiendo GNU Emacs y org-mode (VIII) (Post Quijote Libre)--L0--C0--June 03, 2017 12:24 PM

Bad Daemons: Ejecución asíncrona de bloques babel en org-mode

En el articulo sobre la programación literaria para sysadmins se pudo ver que los bloques de babel en org-mode son muy útiles. Lo malo que tiene ejecutar estos bloques es que se bloquea emacs. El dichoso tema de la concurrencia de nueva. Pero como siempre, se puede trampear.

Se puede abrir un proceso paralelo de emacs para que ejecute el bloque sin que bloquee el proceso de emacs principal. Me estaba pegando con ello justo cuando descubrí que alguien ya lo habia hecho mejor. Veamos un ejemplo. Primero un ejemplo síncrono, que no tiene mucho sentido pero es gratis:

no-async-babel.gif

async-babel.gif

Muy fácil de usar, como se puede ver. Lo único malo que tiene es que no se puede usar la variable :session, por lo tanto se pierde la idempotencia. Se puede usar :noweb, pero cada bloque ejecutará todo lo anterior, lógicamente. Pero bueno, no me suele afectar demasiado para lo que uso. Para instalar el paquete que habilita este parámetro hay que añadir esto al archivo de configuración de emacs:

(add-to-list 'el-get-sources '(:name ob-async
                                     :type github
                                     :pkgname "astahlman/ob-async"))

(if (not (el-get-package-installed-p 'ob-async))
    (el-get 'sync 'ob-async))

(use-package ob-async
  :load-path "el-get/ob-async/"
  :config
  (add-to-list 'org-ctrl-c-ctrl-c-hook 'ob-async-org-babel-execute-src-block))

Una vez instalado y configurado, se puede usar como cualquier otro parámetro de bloque. Se puede establecer en el propio bloque, como se puede ver en el segundo gif, o se puede establecer como una propiedad en un árbol.

-1:-- Ejecución asíncrona de bloques babel en org-mode (Post drymer)--L0--C0--May 28, 2017 09:23 AM

Bad Daemons: Que tecla iba ahora?

Cuando empiezas a usar un modo de emacs lo más habitual es intentar aprender los atajos. Siempre es algo complicado, al menos para mi, que tengo la memoria de un pez. Lo que hacia hasta ahora era mantener la página del proyecto abierta en el navegador o apuntarme los binds. O simplemente presionar M-x, escribir la función que quiero ejecutar, ver que atajo de teclado tiene asignado (ivy te lo muestra) y presionarlo por eso de la memoria muscular. Pero hace poco descubrí which-key.

Lo que hace es mostrar los posibles atajos de teclado cuando se ha apretado el inicio de una combinación. Por ejemplo, si presiono C-c me mostrará todas las combinaciones que empiecen por C-c. Se verá más claro en esta imagen.

which-key.png

Y la configuración es muy simple:

(use-package which-key
  :ensure t
  :config
  (which-key-mode))
-1:-- Que tecla iba ahora? (Post drymer)--L0--C0--May 22, 2017 06:48 PM

Quijote Libre: Aprendiendo GNU Emacs y org-mode (VII)

“Tareas” en org-mode Todo sistema de productividad tiene una función, que no es otra que ayudarnos a “hacer” aquellas cosas que tenemos, queremos y podemos hacer, a las que generalmente llamamos “Tareas”. Ya hemos visto que esta denominación es excesivamente genérica para un sistema GTD y creo todos hemos experimentado que a veces una lista … Continuar leyendo "Aprendiendo GNU Emacs y org-mode (VII)"
-1:-- Aprendiendo GNU Emacs y org-mode (VII) (Post Quijote Libre)--L0--C0--May 01, 2017 10:09 AM

Bad Daemons: Abrir un fichero con sudo automáticamente en emacs

Es una de estas cosas que a primera vista parece que deba ser algo simple, pero es algo más complejo cuando empiezas a mirarlo. Ya hace tiempo que encontré una función para hacerlo en local en la fantástica web de emacsredux:

(defun sudo-edit (&optional arg)
  "Edit currently visited file as root.

With a prefix ARG prompt for a file to visit.
Will also prompt for a file to visit if current
buffer is not visiting a file."
  (interactive "P")
  (if (or arg (not buffer-file-name))
      (find-file (concat "/sudo:root@localhost:"
                         (ido-read-file-name "Find file(as root): ")))
    (find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))

El funcionamiento es: abrir un fichero y luego ejecutar M-x sudo-edit RET. No es la fiesta, pero funciona bien. El problema es que yo suelo editar muchos ficheros en remoto y por desgracia esta función no funciona, ya que tiene hardcodeado el hostname localhost. Intentando arreglar esto, me fijé en que el sitio del que habia sacado esta función tenia una segunda opción que deseché simplemente por que no la entendia:

(defadvice find-file (after find-file-sudo activate)
  "Find file as root if necessary."
  (unless (and buffer-file-name
               (file-writable-p buffer-file-name))
    (find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))

Ahora que ya entiendo un poco más de emacs lisp, se que defadvice sirve para añadir la ejecución de una función o macro antes de otra, una suerte de before-hook. Y en este caso, esta función hace que find-file intente abrir el fichero con sudo si detecta que no tiene permisos para modificarlo. Es posible que esto diése problemas si se tiene la costumbre de modificar los atributos de los ficheros, pero es muy poco habitual.

Como eso no me servia para editar ficheros en máquinas remotas, he modificado la función anterior para que detecte automáticamente si se intenta abrir un fichero en la máquina local o en una remota y si es lo segundo, que modifique la ruta para que pueda hacerlo:

(defadvice purpose-find-file-overload (after find-file-sudo activate)
  "Find file as root if necessary."
  (unless (and buffer-file-name
               (file-writable-p buffer-file-name))

    (let* ((buffer-file (buffer-file-name))
           (coincidence (string-match-p "@" buffer-file))
           (hostname)
           (buffer-name))
      (if coincidence
          (progn
            (setq hostname (substring buffer-file (+ coincidence 1)
                                      (string-match-p ":" buffer-file      (+ coincidence 1))))
            (setq buffer-name
                  (concat
                   (substring buffer-file 0 coincidence) "@"
                   (replace-regexp-in-string ":" (concat "|sudo:" hostname ":")
                                             buffer-file nil nil nil (+ coincidence 1))))
            (find-alternate-file buffer-name))
          (find-alternate-file (concat "/sudo:root@localhost:" buffer-file))))))

En mi caso se modifica la función purpose-find-file-overload, que es la que tengo asignada a C-x C-f, pero se puede cambiar por ido-find-file, find-file o la que sea.

La ruta correcta para abrir un fichero remoto con permiso de superusuario seria así: /ssh:drymer@daemons.it|sudo:root@daemons.it:/. Esto último lo he sacado de este post de Stack Overflow.

-1:-- Abrir un fichero con sudo automáticamente en emacs (Post drymer)--L0--C0--April 25, 2017 04:00 PM

Quijote Libre: Aprendiendo GNU Emacs y org-mode (VI)

“Etiquetas temporales” en org-mode En el manual de org-mode apartado 8 se hace referencia a un concepto especial de etiquetado que llama “timestamp” termino que traduciré por “Etiqueta temporal” ya que tiene un tratamiento muy similar al que se usa con las etiquetas (ver entrada anterior), siendo en realidad una “etiqueta” con un formato específico, … Continuar leyendo "Aprendiendo GNU Emacs y org-mode (VI)"
-1:-- Aprendiendo GNU Emacs y org-mode (VI) (Post Quijote Libre)--L0--C0--April 22, 2017 09:49 AM

uGeek: 025. Metodo mas completo para recopilar notas, org Mode

Publicado por Angel

Suscribete al Blog : RSS del Blog

Suscribete al Podcast : RSS , ITunes , ivoox



Aplicación para Android: http://www.orgzly.com/
Aplicación multiplataforma de PC: https://www.gnu.org/software/emacs/

Este es el método definitivo, hasta ahora, para tomar mis notas con un sistema jerárquico de  notas y todas dentro en un único txt, renombrado como .org.
Os recomiendo que le deis una oportunidad, porque estoy seguro que os gustará.

Tags: , emacs , podcast ,

<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
-1:-- 025. Metodo mas completo para recopilar notas, org Mode (Post )--L0--C0--March 08, 2017 12:00 AM

La Pipa Plena: Curso emacs 23. Presentaciones con beamer

En esta entrada veremos como crear una presentación con beamer a partir de un archivo org. Para no andar dejando archivos esparcidos por cualquier parte, creamos un directorio de trabajo y en su interior colocamos el archivo presentacion.org: $ mkdir beamer $ touch beamer/presentacion.org Para hacer lo mismo también puedes emplear dired: M-x d RET
-1:-- Curso emacs 23. Presentaciones con beamer (Post templix)--L0--C0--March 05, 2017 04:37 PM

La Pipa Plena: Curso emacs 22. Personalizar la linea de modo y el minibuffer

En esta entrada veremos como personalizar un poco la linea de modo y el minibuffer. Sin ningún tipo de modificación, la linea de modo puede lucir más o menos así: Añadiendo a nuestro archivo de configuración .emacs las siguientes lineas: (setq-default mode-line-format (list " %2 " mode-line-modified " %2 %f %4 [%l:%p] " " %4
-1:-- Curso emacs 22. Personalizar la linea de modo y el minibuffer (Post templix)--L0--C0--February 24, 2017 03:42 PM

La Pipa Plena: Curso emacs 21. Postámbulos y algo sobre imágenes en org-mode

Por defecto, el postámbulo que aparece en un html que ha sido exportado de un archivo org, coge los datos del sistema y consta del nombre del autor (author), la fecha (timestamp), las versiones de emacs y org-mode (creator) y el link de validación del código. Si queremos especificar más datos de las mencionados o
-1:-- Curso emacs 21. Postámbulos y algo sobre imágenes en org-mode (Post templix)--L0--C0--February 18, 2017 06:22 PM

nba - GNU's Rock: no mas tabs en go-mode

Go tiene una ridicula guia de estilo para formatear codigo que no me agrada, de no seguir algunas reglas el compilador/interprete simplemente se niega a hacer nada. Otras reglas, son menos rigurosas, como la indentacion o colocar o no espacios, en algunos sitios. La indentacion oficial del lenguaje, tiene tabs equivalentes a 4 espacios en blanco y eso, eso, es algo que no puedo soportar, como tampoco tener tabs, porque cada editor los despliega como le viene en gana.
-1:-- no mas tabs en go-mode (Post )--L0--C0--February 13, 2017 03:52 AM

La Pipa Plena: Curso emacs 20. Gráficos con org-mode (ditaa y plantuml)

En esta entrega veremos como crear gráficos con org-mode para que al exportar a html se vean aparentes. En primer lugar, caso de no tenerla instalada, instalamos la aplicación ditaa (apt-get install ditaa), aplicación que transforma caracteres ascii en mapas de bips. Una vez instalado en el sistema, abrimos emacs y visualizamos su página man:
-1:-- Curso emacs 20. Gráficos con org-mode (ditaa y plantuml) (Post templix)--L0--C0--February 05, 2017 03:07 PM

nba - GNU's Rock: org mode

org-mode es un lenguaje de marcas ligeras nacido de, por, y para emacs y como emacs, org tambien tiene aplicaciones varias, puede ser una agenda, una lista de pendientes, hoja de calculo, blog de notas, sistema de documentacion e investigacion reproducible, todo junto y revuelto, encima da la posibilidad de exportar el contenido a pdf, latex, html, markdown, odt y groff (algunas opciones vienen por separado y requieren configuracion).
-1:-- org mode (Post )--L0--C0--January 31, 2017 08:40 PM

Maxxcan's Site: Qué hacer después de instalar Emacs (3ª parte)

Qué hacer después de instalar Emacs (3ª parte) Seguimos con la última parte de nuestra introducción…
-1:-- Qué hacer después de instalar Emacs (3ª parte) (Post admin)--L0--C0--January 24, 2017 01:35 PM

La Pipa Plena: Curso emacs 19. impatient-mode, writeroom-mode, capturas y memoria en uso.

En esta ocasión veremos algunos paquetes interesantes que, en determinadas circunstancias, pueden sernos útiles. En ciertas ocasiones queremos compartir un buffer de emacs en nuestra red local y que además todos vean lo que estamos tecleando en tiempo real. Una forma fácil de realizar estas proezas es con la extensión impatient-mode. Este paquete precisa simple-httpd
-1:-- Curso emacs 19. impatient-mode, writeroom-mode, capturas y memoria en uso. (Post templix)--L0--C0--November 28, 2016 06:00 PM