emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Regression: org-translate-link doesn't work correctly in Org 8.3
@ 2015-08-19  9:58 Sergei Nosov
  2015-08-19 10:25 ` Bastien
  0 siblings, 1 reply; 11+ messages in thread
From: Sergei Nosov @ 2015-08-19  9:58 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1563 bytes --]

Hi!

I'm the maintainer of the toc-org (https://github.com/snosov1/toc-org)
package. With 8.3 I have noticed a regression in how org-translate-link
function works.

In this package, toc-org, I use org-link-translation-function variable to
make C-c C-o (org-open-at-point) work with GitHub-style links. To do this,
I set the aforementioned org-link-translation-function variable to a
function that translates GitHub-style links back to Org-style.

It was working fine in Org 8.2, but it doesn't work in Org 8.3.

I believe the root cause is the following. Here's the code of the
org-translate-link function:

(defun org-translate-link (s)
  "Translate a link string if a translation function has been defined."
  (if (and org-link-translation-function
  (fboundp org-link-translation-function)
  (string-match "\\([a-zA-Z0-9]+\\):\\(.*\\)" s))
      (progn
(setq s (funcall org-link-translation-function
(match-string 1 s) (match-string 2 s)))
(concat (car s) ":" (cdr s)))
    s))

Consider that we're trying to follow the link [[#about][About]]

In Org 8.2 org-translate-link function is called with s equal to
"thisfile:#about". So, (string-match "\\([a-zA-Z0-9]+\\):\\(.*\\)" s)
returns true and the call to the function stored in
org-link-translation-function follows.

In Org 8.3 org-translate-link function is called with s equal to simply
"#about" (no "thisfile:" in the beginning). Thus, the string-match call
NEVER succeeds (because there's no colon).

Please, let me know, what would be the solution to this issue.

--
Best regards,
       Sergei Nosov

[-- Attachment #2: Type: text/html, Size: 3832 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Regression: org-translate-link doesn't work correctly in Org 8.3
  2015-08-19  9:58 Regression: org-translate-link doesn't work correctly in Org 8.3 Sergei Nosov
@ 2015-08-19 10:25 ` Bastien
  2015-08-19 10:39   ` Nicolas Goaziou
  0 siblings, 1 reply; 11+ messages in thread
From: Bastien @ 2015-08-19 10:25 UTC (permalink / raw)
  To: Sergei Nosov; +Cc: emacs-orgmode

Hi Sergei,

wild guess: what if you simply make the ":" optional like this:

(string-match "\\([a-zA-Z0-9]+\\):\\(.*\\)" s)

(string-match "\\([a-zA-Z0-9]+\\):?\\(.*\\)" s)
                                 ^^^

?

-- 
 Bastien

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Regression: org-translate-link doesn't work correctly in Org 8.3
  2015-08-19 10:25 ` Bastien
@ 2015-08-19 10:39   ` Nicolas Goaziou
  2015-08-19 10:53     ` Sergei Nosov
  2015-08-19 10:55     ` Bastien
  0 siblings, 2 replies; 11+ messages in thread
From: Nicolas Goaziou @ 2015-08-19 10:39 UTC (permalink / raw)
  To: Bastien; +Cc: Sergei Nosov, emacs-orgmode

Hello,

Bastien <bzg@gnu.org> writes:

> Hi Sergei,
>
> wild guess: what if you simply make the ":" optional like this:
>
> (string-match "\\([a-zA-Z0-9]+\\):\\(.*\\)" s)
>
> (string-match "\\([a-zA-Z0-9]+\\):?\\(.*\\)" s)
>                                  ^^^
>
> ?

I think `org-translate-link' should be updated to provide correct type,
including internal ones, to `org-link-translation-function'. E.g.,

  http://orgmode.org => "http"
  #something         => "custom-id"
  (ref:line)         => "coderef"
  whatever           => "fuzzy"

At least, this would be consistent with the parser.

Regards,

-- 
Nicolas Goaziou

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Regression: org-translate-link doesn't work correctly in Org 8.3
  2015-08-19 10:39   ` Nicolas Goaziou
@ 2015-08-19 10:53     ` Sergei Nosov
  2015-08-19 10:55     ` Bastien
  1 sibling, 0 replies; 11+ messages in thread
From: Sergei Nosov @ 2015-08-19 10:53 UTC (permalink / raw)
  To: Bastien, Sergei Nosov, emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1665 bytes --]

> wild guess: what if you simply make the ":" optional like this:

I believe, the preceding text should be made optional as well (i.e. +
should be *, like (string-match "\\([a-zA-Z0-9]*\\):?\\(.*\\)" s))

But anyway, it doesn't seem to work, because for some reason (I just
noticed this) - the org-translate-link function doesn't seem to be called
at all, when C-c C-o is executed. It is called only
in org-element-link-parser.

Also, org-translate-link tries to return the link in the "<type>:<link>"
format (exactly the way it expects the input parameter to be). So, simply
modifying the regexp shouldn't work because of this as well.

So, I suppose, something like what Nicolas suggests should be done about it
(i.e. providing the type and the link in the "new format").

Also, org-translate-link should probably be called somewhere
in org-open-at-point again.



--
Best regards,
       Sergei Nosov

On Wed, Aug 19, 2015 at 1:39 PM, Nicolas Goaziou <mail@nicolasgoaziou.fr>
wrote:

> Hello,
>
> Bastien <bzg@gnu.org> writes:
>
> > Hi Sergei,
> >
> > wild guess: what if you simply make the ":" optional like this:
> >
> > (string-match "\\([a-zA-Z0-9]+\\):\\(.*\\)" s)
> >
> > (string-match "\\([a-zA-Z0-9]+\\):?\\(.*\\)" s)
> >                                  ^^^
> >
> > ?
>
> I think `org-translate-link' should be updated to provide correct type,
> including internal ones, to `org-link-translation-function'. E.g.,
>
>   http://orgmode.org => "http"
>   #something         => "custom-id"
>   (ref:line)         => "coderef"
>   whatever           => "fuzzy"
>
> At least, this would be consistent with the parser.
>
> Regards,
>
> --
> Nicolas Goaziou
>

[-- Attachment #2: Type: text/html, Size: 3891 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Regression: org-translate-link doesn't work correctly in Org 8.3
  2015-08-19 10:39   ` Nicolas Goaziou
  2015-08-19 10:53     ` Sergei Nosov
@ 2015-08-19 10:55     ` Bastien
  2015-08-19 13:28       ` Nicolas Goaziou
  1 sibling, 1 reply; 11+ messages in thread
From: Bastien @ 2015-08-19 10:55 UTC (permalink / raw)
  To: Nicolas Goaziou; +Cc: Sergei Nosov, emacs-orgmode

Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:

> I think `org-translate-link' should be updated to provide correct type,
> including internal ones, to `org-link-translation-function'. E.g.,
>
>   http://orgmode.org => "http"
>   #something         => "custom-id"
>   (ref:line)         => "coderef"
>   whatever           => "fuzzy"
>
> At least, this would be consistent with the parser.

Agreed.

-- 
 Bastien

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Regression: org-translate-link doesn't work correctly in Org 8.3
  2015-08-19 10:55     ` Bastien
@ 2015-08-19 13:28       ` Nicolas Goaziou
  2015-08-19 13:55         ` Sergei Nosov
  0 siblings, 1 reply; 11+ messages in thread
From: Nicolas Goaziou @ 2015-08-19 13:28 UTC (permalink / raw)
  To: Bastien; +Cc: Sergei Nosov, emacs-orgmode

Bastien <bzg@gnu.org> writes:

> Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:
>
>> I think `org-translate-link' should be updated to provide correct type,
>> including internal ones, to `org-link-translation-function'. E.g.,
>>
>>   http://orgmode.org => "http"
>>   #something         => "custom-id"
>>   (ref:line)         => "coderef"
>>   whatever           => "fuzzy"
>>
>> At least, this would be consistent with the parser.
>
> Agreed.

Done. There is one foreseeable incompatible change however. When link
type is unknown to Org, it is reported as fuzzy, e.g.:

  [[foobar:something]]

is seen as ("fuzzy" "foobar:something") by
`org-link-translation-function', not ("foobar" "something"), unless
"foobar" belong to `org-link-types'.

In practice I don't think it matters because
`org-link-translation-function' isn't meant to create new link types but
handle conflicting link types. In any case, in the example above, one
can always use

  (when (and (string= type "fuzzy")
             (string-match "\\(.*?\\):\\(.*\\)" path))
   (cons (match-string 1) (match-string 2)))

in `org-link-translation-function'.

Regards,

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Regression: org-translate-link doesn't work correctly in Org 8.3
  2015-08-19 13:28       ` Nicolas Goaziou
@ 2015-08-19 13:55         ` Sergei Nosov
  2015-08-21 12:11           ` Nicolas Goaziou
  0 siblings, 1 reply; 11+ messages in thread
From: Sergei Nosov @ 2015-08-19 13:55 UTC (permalink / raw)
  To: Bastien, Sergei Nosov, emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 2015 bytes --]

Great! Thanks!

2 questions, though.

1. Previously, the type of the link was "thisfile", now it's "custom-id"
and also, the leading hash is removed from the link. Let's consider
the [[#about][About]]
example once again. Previously, I was given ("thisfile" . "#about") and I
changed this to ("thisfile" . "About"), which then worked like a charm.
Now, I'm given ("custom-id" . "about"), which I don't know how I should
translate. Neither of ("custom-id" . "About") or ("id" . "About") work.
What should it be?

BTW, there's a line (require 'ord-id) in org-open-at-point function in
master. Probably, it's a typo (should be (require 'org-id))

2. When those fixes will be available in MELPA?


--
Best regards,
       Sergei Nosov

On Wed, Aug 19, 2015 at 4:28 PM, Nicolas Goaziou <mail@nicolasgoaziou.fr>
wrote:

> Bastien <bzg@gnu.org> writes:
>
> > Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:
> >
> >> I think `org-translate-link' should be updated to provide correct type,
> >> including internal ones, to `org-link-translation-function'. E.g.,
> >>
> >>   http://orgmode.org => "http"
> >>   #something         => "custom-id"
> >>   (ref:line)         => "coderef"
> >>   whatever           => "fuzzy"
> >>
> >> At least, this would be consistent with the parser.
> >
> > Agreed.
>
> Done. There is one foreseeable incompatible change however. When link
> type is unknown to Org, it is reported as fuzzy, e.g.:
>
>   [[foobar:something]]
>
> is seen as ("fuzzy" "foobar:something") by
> `org-link-translation-function', not ("foobar" "something"), unless
> "foobar" belong to `org-link-types'.
>
> In practice I don't think it matters because
> `org-link-translation-function' isn't meant to create new link types but
> handle conflicting link types. In any case, in the example above, one
> can always use
>
>   (when (and (string= type "fuzzy")
>              (string-match "\\(.*?\\):\\(.*\\)" path))
>    (cons (match-string 1) (match-string 2)))
>
> in `org-link-translation-function'.
>
> Regards,
>

[-- Attachment #2: Type: text/html, Size: 4134 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Regression: org-translate-link doesn't work correctly in Org 8.3
  2015-08-19 13:55         ` Sergei Nosov
@ 2015-08-21 12:11           ` Nicolas Goaziou
  2015-08-21 12:48             ` Sergei Nosov
  0 siblings, 1 reply; 11+ messages in thread
From: Nicolas Goaziou @ 2015-08-21 12:11 UTC (permalink / raw)
  To: Sergei Nosov; +Cc: Bastien, emacs-orgmode

Sergei Nosov <sergei.nosov@gmail.com> writes:

> 1. Previously, the type of the link was "thisfile", now it's "custom-id"
> and also, the leading hash is removed from the link. Let's consider
> the [[#about][About]]
> example once again. Previously, I was given ("thisfile" . "#about") and I
> changed this to ("thisfile" . "About"), which then worked like a charm.
> Now, I'm given ("custom-id" . "about"), which I don't know how I should
> translate. Neither of ("custom-id" . "About") or ("id" . "About") work.
> What should it be?

What doesn't work? I.e., what is produced and what did you expect
instead?

> BTW, there's a line (require 'ord-id) in org-open-at-point function in
> master. Probably, it's a typo (should be (require 'org-id))

Fixed. Thank you.

> 2. When those fixes will be available in MELPA?

IIUC MELPAe they should already be available.


Regards,

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Regression: org-translate-link doesn't work correctly in Org 8.3
  2015-08-21 12:11           ` Nicolas Goaziou
@ 2015-08-21 12:48             ` Sergei Nosov
  2015-08-21 13:04               ` Nicolas Goaziou
  0 siblings, 1 reply; 11+ messages in thread
From: Sergei Nosov @ 2015-08-21 12:48 UTC (permalink / raw)
  To: Sergei Nosov, Bastien, emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1771 bytes --]

> What doesn't work? I.e., what is produced and what did you expect
instead?
​
The jump via C-c C-o didn't work for me. But I figured it out in a
meanwhile - supposedly, what was previously called "thisfile" link type is
now called "fuzzy".​ Thanks.

> IIUC MELPAe they should already be available.

Sorry, I meant, Org ELPA (http://orgmode.org/elpa/) not MELPA (org is not
published on MELPA at all). The last published package seem to be
http://orgmode.org/elpa/org-20150817.tar which doesn't contain the fix. So,
my question is - when the next package (that contains the fix) will be
published? Or, alternatively, what's the Org policy for publishing new
packages to ELPA?


--
Best regards,
       Sergei Nosov

On Fri, Aug 21, 2015 at 3:11 PM, Nicolas Goaziou <mail@nicolasgoaziou.fr>
wrote:

> Sergei Nosov <sergei.nosov@gmail.com> writes:
>
> > 1. Previously, the type of the link was "thisfile", now it's "custom-id"
> > and also, the leading hash is removed from the link. Let's consider
> > the [[#about][About]]
> > example once again. Previously, I was given ("thisfile" . "#about") and I
> > changed this to ("thisfile" . "About"), which then worked like a charm.
> > Now, I'm given ("custom-id" . "about"), which I don't know how I should
> > translate. Neither of ("custom-id" . "About") or ("id" . "About") work.
> > What should it be?
>
> What doesn't work? I.e., what is produced and what did you expect
> instead?
>
> > BTW, there's a line (require 'ord-id) in org-open-at-point function in
> > master. Probably, it's a typo (should be (require 'org-id))
>
> Fixed. Thank you.
>
> > 2. When those fixes will be available in MELPA?
>
> IIUC MELPAe they should already be available.
>
>
> Regards,
>

[-- Attachment #2: Type: text/html, Size: 3504 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Regression: org-translate-link doesn't work correctly in Org 8.3
  2015-08-21 12:48             ` Sergei Nosov
@ 2015-08-21 13:04               ` Nicolas Goaziou
  2015-08-21 18:44                 ` Achim Gratz
  0 siblings, 1 reply; 11+ messages in thread
From: Nicolas Goaziou @ 2015-08-21 13:04 UTC (permalink / raw)
  To: Sergei Nosov; +Cc: Bastien, emacs-orgmode

Sergei Nosov <sergei.nosov@gmail.com> writes:

> The jump via C-c C-o didn't work for me. But I figured it out in a
> meanwhile - supposedly, what was previously called "thisfile" link type is
> now called "fuzzy".​ Thanks.

fuzzy are for text search, targets and NAME keywords. I'm not sure what
was the exact definition of "thisfile", since it doesn't appear in the
manual. However, I guess it encompassed custom-id, fuzzy, radio and
coderef link types.

> Sorry, I meant, Org ELPA (http://orgmode.org/elpa/) not MELPA (org is not
> published on MELPA at all). The last published package seem to be
> http://orgmode.org/elpa/org-20150817.tar which doesn't contain the fix. So,
> my question is - when the next package (that contains the fix) will be
> published? Or, alternatively, what's the Org policy for publishing new
> packages to ELPA?

I think Org ELPA's release is updated at least every week.

Regards,

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Regression: org-translate-link doesn't work correctly in Org 8.3
  2015-08-21 13:04               ` Nicolas Goaziou
@ 2015-08-21 18:44                 ` Achim Gratz
  0 siblings, 0 replies; 11+ messages in thread
From: Achim Gratz @ 2015-08-21 18:44 UTC (permalink / raw)
  To: emacs-orgmode

Nicolas Goaziou writes:
> I think Org ELPA's release is updated at least every week.


The last update was published with a wrong version number (that package
manager will not consider as an update) and no further updates will be
published at all I suspect unless the version header in org.el gets
properly done.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Factory and User Sound Singles for Waldorf Q+, Q and microQ:
http://Synth.Stromeko.net/Downloads.html#WaldorfSounds

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2015-08-21 18:45 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-19  9:58 Regression: org-translate-link doesn't work correctly in Org 8.3 Sergei Nosov
2015-08-19 10:25 ` Bastien
2015-08-19 10:39   ` Nicolas Goaziou
2015-08-19 10:53     ` Sergei Nosov
2015-08-19 10:55     ` Bastien
2015-08-19 13:28       ` Nicolas Goaziou
2015-08-19 13:55         ` Sergei Nosov
2015-08-21 12:11           ` Nicolas Goaziou
2015-08-21 12:48             ` Sergei Nosov
2015-08-21 13:04               ` Nicolas Goaziou
2015-08-21 18:44                 ` Achim Gratz

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).