From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: "Basil L. Contovounesios" Newsgroups: gmane.emacs.bugs Subject: bug#33043: [PATCH v1 1/1] Support for the truncation of displayed URLs Date: Thu, 18 Oct 2018 11:38:04 +0100 Message-ID: <87pnw7fskz.fsf@tcd.ie> References: <20181015100626.2344-1-dme@dme.org> <87r2go2opq.fsf@tcd.ie> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1539859026 21530 195.159.176.226 (18 Oct 2018 10:37:06 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 18 Oct 2018 10:37:06 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: 33043@debbugs.gnu.org To: David Edmondson Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Oct 18 12:37:01 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gD5fp-0005U5-9v for geb-bug-gnu-emacs@m.gmane.org; Thu, 18 Oct 2018 12:37:01 +0200 Original-Received: from localhost ([::1]:41548 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gD5hv-0004ML-Uo for geb-bug-gnu-emacs@m.gmane.org; Thu, 18 Oct 2018 06:39:11 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:57209) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gD5hp-0004ME-I5 for bug-gnu-emacs@gnu.org; Thu, 18 Oct 2018 06:39:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gD5hm-0008DB-8f for bug-gnu-emacs@gnu.org; Thu, 18 Oct 2018 06:39:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:51888) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gD5hm-0008Cy-1B for bug-gnu-emacs@gnu.org; Thu, 18 Oct 2018 06:39:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gD5hm-000497-1G for bug-gnu-emacs@gnu.org; Thu, 18 Oct 2018 06:39:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "Basil L. Contovounesios" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 18 Oct 2018 10:39:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33043 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 33043-submit@debbugs.gnu.org id=B33043.153985909815867 (code B ref 33043); Thu, 18 Oct 2018 10:39:01 +0000 Original-Received: (at 33043) by debbugs.gnu.org; 18 Oct 2018 10:38:18 +0000 Original-Received: from localhost ([127.0.0.1]:56146 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gD5h4-00047r-B1 for submit@debbugs.gnu.org; Thu, 18 Oct 2018 06:38:18 -0400 Original-Received: from mail-ed1-f65.google.com ([209.85.208.65]:39436) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gD5h2-00047d-Mc for 33043@debbugs.gnu.org; Thu, 18 Oct 2018 06:38:17 -0400 Original-Received: by mail-ed1-f65.google.com with SMTP id d15-v6so27762963edq.6 for <33043@debbugs.gnu.org>; Thu, 18 Oct 2018 03:38:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tcd-ie.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=0SJX0gbwyAvjKjSx9FFs0veVS3/HpJgWMEsN69HnVCA=; b=G/taUC/2d+i389dEdzFOLAcIx3jEnSYtHZwa/7nxtHiTBkAz1C2Ic6GpYgRW6kTt2n vtLWTvAWPV3/EQx+C6pifQkIyuCadTO38wxpwn3OXHr5eAxr76PAjcUvYQurgl9oXYwc ce85sSJ4VuCoy9AC9WRIxlbzCAr2PrXae5TM2t68SFxx3zLy29ltuwxvTPZ1OAaoW1Zj 2ab945ayMiVkJioUsHth4USpS/E7G3Q91sYHInHtKmBpfDWqTeesls6o72KRBQsJfyA6 7hncLX8mJfuRp0kXJVW7RaGNCkqJOUGLjA8EI9AArTIDIDeuPJA4zTiaMmNcRFM5X5Mw c8Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=0SJX0gbwyAvjKjSx9FFs0veVS3/HpJgWMEsN69HnVCA=; b=H6Cis5SYKc6ksJa6I+A3BLgqVxW88FRrc/JVW1+5FHPRR1Qkq+PCLX1hcZq1ONm9zI hf6VkvE6xAsWBXVguUoasLZ69GVEQGslZg/j7CCCk+Hto6lQL51QfeWQsJTkkN0NO2T0 Gp1iD2SxFO/KS/RRUeCSQFUrvajHoFVcoXzS8uxDwVJ1TZSpVFaSvEmjlV15GQ8UYRKF L56Dngs+jts53FkHK2l0xGQQ2Mn1jsJPPRFiGJQOQVpb1Ny5EJEPdEbIcZj+XcfI2dYX oXwcu94qCgvkVEeHRctOwmqkTwt94fgZz1zmgG2Pq9FA6qpxBbnWZbChZ0vh/qkgUUY9 iRyw== X-Gm-Message-State: ABuFfohJgceHS754+uQjq5Qc+y8qtmXV5k76ao3lY3Dipd37sujIE0sd oQvLPkpGARPer9S2CWCQuhW7BA== X-Google-Smtp-Source: ACcGV63cdT7TIBgyMShyOVbeTUNZnWPXxeW1HbwDMIiizJvTrdlrqFZquucjLjkYl5jULxB5YE8ceA== X-Received: by 2002:a17:906:48cd:: with SMTP id d13-v6mr28585117ejt.85.1539859090747; Thu, 18 Oct 2018 03:38:10 -0700 (PDT) Original-Received: from localhost (51-171-243-2-dynamic.agg2.clk.blp-srl.eircom.net. [51.171.243.2]) by smtp.gmail.com with ESMTPSA id p57-v6sm7099580edc.92.2018.10.18.03.38.09 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 18 Oct 2018 03:38:09 -0700 (PDT) In-Reply-To: (David Edmondson's message of "Thu, 18 Oct 2018 10:39:08 +0100") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:151368 Archived-At: --=-=-= Content-Type: text/plain David Edmondson writes: > On Wednesday, 2018-10-17 at 23:27:45 +01, Basil L. Contovounesios wrote: > >> Couldn't we reuse url-truncate-url-for-viewing, which tries to be smart >> about where it places the ellipsis, for this? I think the existing code >> can also be cleaned up a little: > > I didn't know about url-truncate-url-for-viewing, no other reason. > > I'd be happy with your change, but note that it will always truncate > URLs that are wider than the current frame - there is no way to have no > truncation take place. > > If a user is most familiar with something like ffap to open URLs then > this is unfortunate - ffap doesn't see the full URL in the buffer. Sorry, that was an oversight. Here's how the last patch can be patched to support the default of no truncation: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=rcirc.diff diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index de28cdb054..31f0baddc0 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -2495,7 +2495,9 @@ rcirc-markup-urls ;; `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) + (if rcirc-url-max-length + (url-truncate-url-for-viewing url rcirc-url-max-length) + url) 'face 'rcirc-url 'follow-link t 'rcirc-url url --=-=-= Content-Type: text/plain If you prefer to avoid deletion and insertion when rcirc-url-max-length is nil, you can also write the following: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=rcirc-alt.diff diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index fe9c71a21c..4d62b382a6 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -2485,24 +2485,27 @@ 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))) + (url (buffer-substring-no-properties beg end))) + (when rcirc-url-max-length + (replace-match (url-truncate-url-for-viewing url rcirc-url-max-length) + t t) + (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. - (make-text-button start end + (make-text-button beg 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))))) + ;; 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") --=-=-= Content-Type: text/plain Thanks, -- Basil --=-=-=--