From 41d6c3b6d5234db34f5184755cd903116a5c7abe Mon Sep 17 00:00:00 2001 From: Tim Vaughan Date: Fri, 26 Apr 2019 18:00:38 +0200 Subject: [PATCH] Added buttons for urls in text files. --- elopher.el | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/elopher.el b/elopher.el index 767f556..f058179 100644 --- a/elopher.el +++ b/elopher.el @@ -328,8 +328,25 @@ The result is stored as a string in the variable elopher-selector-string." ;; Text retrieval (defun elopher-process-text (string) - (let ((chopped-str (replace-regexp-in-string "\r\n\.\r\n$" "\r\n" string))) - (replace-regexp-in-string "\r" "" chopped-str))) + (let* ((chopped-str (replace-regexp-in-string "\r\n\.\r\n$" "\r\n" string)) + (cleaned-str (replace-regexp-in-string "\r" "" chopped-str))) + (elopher-buttonify-urls cleaned-str))) + +(defvar elopher-url-regex "\\https?://\\([a-z.\-]+\\)\\([^ \r\n\t(),]*\\)") + +(defun elopher-buttonify-urls (string) + (with-temp-buffer + (insert string) + (goto-char (point-min)) + (while (re-search-forward elopher-url-regex nil t) + (let ((url (match-string 0))) + (make-text-button (match-beginning 0) + (match-end 0) + 'elopher-url url + 'action #'elopher-click-url + 'follow-link t + 'help-echo (format "mouse-1, RET: open url %s" url)))) + (buffer-string))) (defun elopher-get-text-node () (let ((content (elopher-node-content elopher-current-node)) -- 2.20.1