new functions url-humanify and url-decode-region
[emacs.git] / .emacs.d / elisp / local / ganneff.el
index 702446a..57e94bc 100644 (file)
@@ -227,6 +227,39 @@ This functions should be added to the hooks of major modes for programming."
     (setenv "ZSTARTDIR" (concat (file-truename dired-directory) "/dired")))
   (start-process "open-shell" nil "/usr/bin/x-terminal-emulator"))
 
+; From: http://www.blogbyben.com/2013/09/emacs-function-humanifying-urls.html,
+; licensed CC BY 3.0. Author: Ben Simon
+;;;###autoload
+(defun url-humanify ()
+  "Take the URL at point and make it human readable."
+  (interactive)
+  (let* ((area (bounds-of-thing-at-point 'url))
+         (num-params  (count-matches "&" (car area) (cdr area)))
+         (i 0))
+    (beginning-of-thing 'url)
+    (when (search-forward "?" (cdr area) t nil)
+      (insert "\n  ")
+      (while (< i num-params)
+        (search-forward "&" nil t nil)
+        (insert "\n  ")
+        (save-excursion
+          (previous-line)
+          (beginning-of-line)
+          (let ((start (search-forward "="))
+                (end (search-forward "&")))
+            (url-decode-region start end)))
+        (setq i (+ i 1))))))
+
+; From: http://www.blogbyben.com/2013/09/emacs-function-humanifying-urls.html,
+; licensed CC BY 3.0. Author: Ben Simon
+;;;###autoload
+(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)))
+
 (provide 'ganneff)
 
 ;;; ganneff.el ends here