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