From 76dc7ed5d5b9c6273e99a2659ba304e9e7eb8e03 Mon Sep 17 00:00:00 2001 From: David Edmondson Date: Sun, 28 Oct 2018 03:11:21 +0000 Subject: [PATCH 1/2] Add URL truncation support to rcirc (bug#33043) * lisp/net/rcirc.el (rcirc-url-max-length): New user option controlling extent of URL truncation, defaulting to none. (rcirc-markup-urls): Use it. --- lisp/net/rcirc.el | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index fe9c71a21c..50e4d8ffb2 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -168,6 +168,14 @@ rcirc-fill-prefix (string :tag "Prefix text")) :group 'rcirc) +(defcustom rcirc-url-max-length nil + "Maximum number of characters in displayed URLs. +If nil, no maximum is applied." + :version "27.1" + :type '(choice (const :tag "No maximum" nil) + (integer :tag "Number of characters")) + :group 'rcirc) + (defvar rcirc-ignore-buffer-activity-flag nil "If non-nil, ignore activity in this buffer.") (make-variable-buffer-local 'rcirc-ignore-buffer-activity-flag) @@ -2491,6 +2499,16 @@ rcirc-markup-urls (end (match-end 0)) (url (match-string-no-properties 0)) (link-text (buffer-substring-no-properties start end))) + ;; Truncate the visible part of URLs if required and necessary. + (when (and rcirc-url-max-length + (> (- end start) rcirc-url-max-length)) + (let* ((ellipsis "...") + (new-end (- (+ start rcirc-url-max-length) + (length ellipsis)))) + (delete-region new-end end) + (goto-char new-end) + (insert ellipsis) + (setq end (point)))) ;; 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. -- 2.19.1