Últimamente estoy teniendo que hacer muchas pruebas en las que pasar urls codificadas (urlencoded) dentro de una url, mi flujo de trabajo consistía en sacar el listado de urls que tenía que pasar como parámetro y una a una ir convirtiéndolas a través de una aplicación web para formar la url completa y testearlo.
A parte de ser un flujo bastante malo, tanto las urls como los parámetros los edito dentro del emacs, así que obviamente si el paso que tengo que realizar en un servicio externo lo puedo realizar también dentro pues puedo aprovechar todas las ventajas que me da el editor.
Estuve buscando un poco a ver si ya existían funciones nativas de emacs para realizar esta tarea, o quizá en algún modo que ya tuviese instalado y pudiese usar, pero no encontré nada, hasta que llegué a esta web.
Aquí encontré un par de funciones que puedo copiar en mi configuración de emacs para poder usarlas y que me han resultado muy útiles.
Por un lado tenemos una que realiza una codificación de tipo urlencode al texto seleccionado
(defun url-encode-region (start end)
"Replace a region with the same contents, only URL encoded."
(interactive "r")
(let ((text (url-hexify-string (buffer-substring start end))))
(delete-region start end)
(insert text)))
y por otro tenemos la inversa, decodifica el texto seleccionado.
(defun url-decode-region (start end)
"Replace a region with the same contents, only URL decoded."
(interactive "r")
(let ((text (url-unhex-string (buffer-substring start end))))
(delete-region start end)
(insert text)))
Las he probado y funcionan correctamente, así que las he añadido a mi configuración de emacs para poder usarlas cuando quiera con
M-x url-encode-region
y
M-x url-decode-region
respectivamente.
Esto y unas cuantas macros es lo único que necesito para crear todas las urls de prueba que necesito y así ahorrarme mucho tiempo.