Emacs Lisp: URL to HTML Link
Here's a command turns a URL at the cursor position into a HTML link.
For example, this:
http://en.wikipedia.org/wiki/Emacs
becomes
<a href="http://en.wikipedia.org/wiki/Emacs">http://en.wikipedia.org/wiki/Emacs</a>
Put this in your Emacs Init File:
(defun xah-html-url-linkify () "Make the URL at cursor point into a HTML link. For example, http://example.org/t.html becomes <a href=\"http://example.org/t.html\">http://example.org/t.html</a> If text under cursor is a file path, use relative path for href value. URL `http://xahlee.info/emacs/emacs/wrap-url.html' Version 2006-10-30 2021-05-18" (interactive) (let (($p0 (point)) $p1 $p2 $input $newStr ) (if (use-region-p) (setq $p1 (region-beginning) $p2 (region-end)) (save-excursion ;; chars that are likely to be delimiters of full path, e.g. space, tabs, brakets. (skip-chars-backward "^ \"\t\n'|[]{}<>〔〕“”〈〉《》【】〖〗〘〙«»‹›·。\\`") (setq $p1 (point)) (goto-char $p0) (skip-chars-forward "^ \"\t\n'|[]{}<>〔〕“”〈〉《》【】〖〗〘〙«»‹›·。\\'") (setq $p2 (point)))) (setq $input (buffer-substring-no-properties $p1 $p2)) (setq $newStr (if (file-exists-p (replace-regexp-in-string "^file:///" "/" $input t t)) (file-relative-name $input) $input )) (delete-region $p1 $p2) (insert (format "<a href=\"%s\">%s</a>" $newStr $newStr ))))