Hi Nicolas On Fri, Jan 29, 2016 at 2:32 PM, Nicolas Goaziou <m...@nicolasgoaziou.fr> wrote: > My suggestion was hypothetical, and not yet implemented. No wonder it > doesn't work. > > If you think this change sounds reasonable, I can implement it, tho. > However, there is some backward incompatibility involved. > > The current solution, i.e., using `eval' only provides `file' symbol.
Only slowly I begin to get it partially. My observation is that if the current `org-open-file' would be changed to (eval cmd ;; LEXICAL argument. `((file . ,(convert-standard-filename file)) (link . ,dlink))) to provide also the `link' symbol then a (add-to-list 'org-file-apps (cons (concat org-player-file-extensions-regexp "::\\([0-9]+:[0-9]+\\(:[0-9]+\\)?\\)") '(org-player-play-file file (match-string 1 link)))) which is simple enough for me to understand in org-player.el works. This situation looks favorable to me at least for a first step because it would mean a version of org-player.el that remains compatible with "any" Org before lexical binding in org.el (release_8.3.3-426-g1f49e9f) but would also become compatible again starting with one of the next commits in Org master. Do I understand correct that this would not break any backward compatibility with all other existing and correct use of `org-file-apps'? On Sun, Jan 17, 2016 at 9:40 PM, Nicolas Goaziou <m...@nicolasgoaziou.fr> wrote: > I don't like the current solution either (eval with a LEXICAL argument). > > I think it would be better to use un function with two arguments (file > and link-string instead). This is not backward compatible, but the > change is trivial: sexp -> (lambda (file link) sexp). I am concerned about backward compatibility and don't understand the lambda part enough: Would backward compatibility be broken only for org-player.el or also for other existing and correct use of `org-file-apps'? Or can `org-open-file' support both for some time like this?: (if (eq (car cmd) 'lambda) ;; Function. (funcall cmd (convert-standard-filename file) dlink) ;; Sexp, deprecated. (eval cmd `((file . ,(convert-standard-filename file)) (link . ,dlink)))) Michael