I'm trying to write a small function that programmatically follows a
link to a gnus message, then calls
`gnus-summary-wide-reply-with-original' to start a reply to that
message. It seemed like `org-open-link-from-string' (after extracting
the address part from the link) would be the right choice, but I'm
seeing odd behavior.

When gnus sets up the reply buffer it also adds several hooks and
actions for restoring windows and marking messages as responded-to, etc,
and these hooks and actions depend on the value of (current-buffer) when
the reply was initiated. That's supposed to be the gnus summary buffer.

When I call all this from a function, however, (current-buffer)
continues to return the org buffer I started in, even after the link was
opened, which confuses gnus, and me. What I mean is this:

(let ((addr the-address-part-of-the-link))
   (org-open-link-from-string addr)
   (message "%s" (current-buffer)) ; returns the org buffer I started in
   (call-interactively
     'gnus-summary-wide-reply-with-original))

There must be something I'm misunderstanding about how buffers work when
you're doing something non-interactive. If I manually eval the
org-open-link-from-string statement, I end up in the summary buffer,
obviously, and all works fine.

What am I not getting?

Thanks!
Eric
  


Reply via email to