Announcements and discussions for Gnus, the GNU Emacs Usenet newsreader
 help / color / mirror / Atom feed
From: Tim Landscheidt <tim@tim-landscheidt.de>
To: Eric Abrahamsen <eric@ericabrahamsen.net>
Cc: info-gnus-english@gnu.org
Subject: Re: How to access HTML DOM/source of MIME part?
Date: Thu, 18 Jun 2020 02:50:30 +0000	[thread overview]
Message-ID: <87lfklgk95.fsf@passepartout.tim-landscheidt.de> (raw)
In-Reply-To: <87bllibxug.fsf@ericabrahamsen.net> (Eric Abrahamsen's message of "Tue, 16 Jun 2020 12:43:35 -0700")

Eric Abrahamsen <eric@ericabrahamsen.net> wrote:

>>> Something to be aware of is that, sometime not too long ago, Lars
>>> re-implemented links in article bodies using widgets instead of buttons.

>> The other way around -- they used to be widgets, and they're now
>> buttons.

> Sure enough, I didn't really know what I was talking about :) But at
> least that points to a likely source of Tim's problem: he's trying to
> use button commands in a version of Emacs/Gnus that is still using
> widgets?

Maybe :-).  Anyway, I found a solution for one of my news-
letters that states the number of entries in its subject and
then has two links per entry with one link containing one
information and the other link containing another informa-
tion and additional (older) entries following that:

| (let
|     ((subject (gnus-summary-article-subject)))
|   (if (string-match "^\\([0-9]+\\) new entries$" subject)
|       (let
|           ((number-of-entries-todo (string-to-number (match-string 1 subject))))
|         (gnus-with-article-buffer
|           (article-goto-body)
|           (let
|               ((article-body-start (point))
|                last-field1
|                last-url)
|             (while (> number-of-entries-todo 0)
|               (widget-forward 1)
|               (if (< (point) article-body-start)
|                   (error "Moved past the wrap!"))
|               (let
|                   ((url-at-point (button-get (button-at (point)) 'shr-url))
|                    (widget-label (let
|                                      ((widget-properties (cdr (widget-at))))
|                                    (buffer-substring-no-properties (plist-get widget-properties :from) (plist-get widget-properties :to)))))
|                 (when (string-match "^https://domain.com/some-prefix/" url-at-point)
|                   (if (not (string= last-url url-at-point))
|                       (setq last-field1 widget-label
|                             last-url url-at-point)
|                     (setq number-of-entries-todo (- number-of-entries-todo 1))
|                     (if (y-or-n-p (format "Browse %s (%s)? " widget-label last-field1))
|                         (browse-url url-at-point)))))))))))

Now:

a) The formula for widget-label feels way too complicated,
   but I did not find a predefined function for that pur-
   pose.  Did I miss something?

b) I use this code as part of gnus-select-article-hook.
   widget-forward does move point internally, but does not
   update/recenter the display.  Is this due to
   gnus-with-article-buffer?  What is the best way to make
   the *Article* buffer follow point's movement?

TIA,
Tim

_______________________________________________
info-gnus-english mailing list
info-gnus-english@gnu.org
https://lists.gnu.org/mailman/listinfo/info-gnus-english

  reply	other threads:[~2020-06-18  2:50 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-11 22:36 Tim Landscheidt
2020-06-11 23:21 ` Eric Abrahamsen
2020-06-12  0:04   ` Tim Landscheidt
2020-06-16 15:34     ` Tim Landscheidt
2020-06-16 18:39       ` Eric Abrahamsen
2020-06-16 19:31         ` Lars Ingebrigtsen
2020-06-16 19:43           ` Eric Abrahamsen
2020-06-18  2:50             ` Tim Landscheidt [this message]
2020-06-26  9:30               ` Lars Ingebrigtsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87lfklgk95.fsf@passepartout.tim-landscheidt.de \
    --to=tim@tim-landscheidt.de \
    --cc=eric@ericabrahamsen.net \
    --cc=info-gnus-english@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).