diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index fe9c71a21c..de28cdb054 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -2485,24 +2485,25 @@ rcirc-markup-my-nick (rcirc-record-activity (current-buffer) 'nick))))) (defun rcirc-markup-urls (_sender _response) - (while (and rcirc-url-regexp ;; nil means disable URL catching + (while (and rcirc-url-regexp ; nil means disable URL catching. (re-search-forward rcirc-url-regexp nil t)) - (let* ((start (match-beginning 0)) + (let* ((beg (match-beginning 0)) (end (match-end 0)) - (url (match-string-no-properties 0)) - (link-text (buffer-substring-no-properties start end))) - ;; Add a button for the URL. Note that we use `make-text-button', - ;; rather than `make-button', as text-buttons are much faster in - ;; large buffers. - (make-text-button start end - 'face 'rcirc-url - 'follow-link t - 'rcirc-url url - 'action (lambda (button) - (browse-url (button-get button 'rcirc-url)))) - ;; record the url if it is not already the latest stored url - (when (not (string= link-text (caar rcirc-urls))) - (push (cons link-text start) rcirc-urls))))) + (url (buffer-substring-no-properties beg end))) + (delete-region beg end) + ;; Add a button for the URL. Note that we use + ;; `insert-text-button', rather than `insert-button', as text + ;; property buttons are much faster in large buffers. + (insert-text-button + (url-truncate-url-for-viewing url rcirc-url-max-length) + 'face 'rcirc-url + 'follow-link t + 'rcirc-url url + 'action (lambda (button) + (browse-url (button-get button 'rcirc-url)))) + ;; Record the URL if it is not already the latest stored URL. + (unless (string= url (caar rcirc-urls)) + (push (cons url beg) rcirc-urls))))) (defun rcirc-markup-keywords (sender response) (when (and (string= response "PRIVMSG")