emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Berry, Charles" <ccberry@ucsd.edu>
To: Win Treese <treese@acm.org>
Cc: "Emacs-orgmode@gnu.org" <Emacs-orgmode@gnu.org>
Subject: Re: open link in source code block
Date: Thu, 17 Jan 2019 18:38:58 +0000	[thread overview]
Message-ID: <0D35FC16-ED35-413F-8EED-E3A4876E13EB@ucsd.edu> (raw)
In-Reply-To: <2C9824E1-C291-475C-820A-B0F83A5E6619@acm.org>



> On Jan 16, 2019, at 3:43 PM, Win Treese <treese@acm.org> wrote:
> 
> [Quoting trimmed for the most relevant context.]
> 
>> On Jan 11, 2019, at 7:12 PM, Berry, Charles <ccberry@ucsd.edu> wrote:
>> 
>>> On Jan 5, 2019, at 7:41 AM, Win Treese <treese@acm.org> wrote:
>>> 
>>>> On Jan 5, 2019, at 5:25 AM, Eric S Fraga <esflists@gmail.com> wrote:
>>>> 
>>>> On Friday,  4 Jan 2019 at 19:38, Win Treese wrote:
>>>>> Suppose I have the following Org file contents:
>>>>> 
>>>>> * test
>>>>> 
>>>>> #+BEGIN_SRC emacs-lisp
>>>>> (setq yyy 3)
>>>>> ;; See https://www.gnu.org
>>>>> #+END_SRC
>>>>> 
>>>>> The URL for gnu.org is highlighted as a clickable link. But if I click
>>>>> it, the source block is evaluated. This seems rather unexpected,
>>>>> especially since my intention was to open the link.
>>>> 
>>>> Probably expected albeit maybe not your preferred behaviour; all about
>>>> precedence.  In any case, I would suggest that the easy solution would
>>>> be to move such links out of the src block. 
> 
>>> This seems like a slightly bigger problem, though: clicking on a highlighted
>>> link doesn’t just fail to open the link, it executes the source block, which can
>>> have very unintended side effects.
>>> 
>>> I wonder if the issue is an artifact of implementation rather than intentional
>>> design: org-open-at-mouse sets point to the location of the click and then
>>> calls org-open-at-point. The documentation at points says that C-c C-o in 
>>> a source block opens the results of evaluation (fair enough, although the
>>> docstring does not).
>>> 
>>> So the problem seems to be about the mouse click behavior, not the basic
>>> function of org-open-at-point.
>> 
>> AFAICS, the issue is with org-open-at-point.
>> 
>> If you really want to `fix' this, there is a hook that allows customization of the behavior of org-open-at-point.
>> 
>> This snippet will add a function to that hook that will attempt to follow a link, when you click on a link in a src-block:
> 
> [Example code with function added to org-open-at-point-functions elided.]
> 
> Chuck,
> 
> Thanks for the code. You’re right—the proximate problem is in org-open-at-point.
> Unfortunately, org-open-at-point calls org-babel-open-src-block-result first thing,
> wrapped by unless, before it gets to running the hook.


TL;DR: "org-open-at-point calls org-babel-open-src-block-result first thing" is not true.

The `unless' COND argument starting around line 5 of the code of `org-open-at-point' runs the hooks in `org-open-at-point-functions'. 

If any hook returns a non-nil then `run-hook-with-args-until-success' returns the value and the BODY forms will not be run.

For example, this: 

	((eq type 'src-block) (org-babel-open-src-block-result))

is part of a BODY form and can only run if all those hooks return nil (or if there is no hook).

The code I provided works as advertised.

HTH,

Chuck

p.s. I am using Org mode version 9.2 (release_9.2-193-ge7901c...

  reply	other threads:[~2019-01-17 18:40 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-05  0:38 open link in source code block Win Treese
2019-01-05 10:25 ` Eric S Fraga
2019-01-05 15:41   ` Win Treese
2019-01-12  0:12     ` Berry, Charles
2019-01-16 23:43       ` Win Treese
2019-01-17 18:38         ` Berry, Charles [this message]
2019-01-18  2:05           ` Win Treese

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

  List information: https://www.orgmode.org/

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

  git send-email \
    --in-reply-to=0D35FC16-ED35-413F-8EED-E3A4876E13EB@ucsd.edu \
    --to=ccberry@ucsd.edu \
    --cc=Emacs-orgmode@gnu.org \
    --cc=treese@acm.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.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).