Re: [Orgmode] %20 in file://... URL
Hi David, David Maus writes: > To be exact: Org already escapes some characters (C-h v > org-link-escape-chars RET) and the colon is a candidate for beeing on > the list. The functions responsible for escaping/unescaping are > `org-link-escape' and `org-link-unescape' and the new implementations > of these functions can be found in > > https://github.com/dmj/dmj-org-mode/tree/feature/org-percent-escaping > > The task at hand: Anticipate the consquences of the new implementation. > I.e. what will happen to links created with the old algorithm. Did you have time to progress on this front? Is there something I can test right now? Thanks! -- Bastien ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] %20 in file://... URL
Hi David, did you find time to work on characters escaping in links? Is there some code we can test by patching the current git HEAD? Thanks! -- Bastien ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] %20 in file://... URL
[...] >> >> hoping that the above helps. > >Definitely. > >Last not least: On this mailing list you should normally Cc: answers >to the original poster -- some are not subscribed to the list at all, >some (like me) read the list in a different account than their main >mail account and miss answers etc. > >Best and thanks, > -- David By the way, I realized that emacs embeds a "URL" package that already has some URL parse function url-generic-parse-url. Wouldn't it be better if Org would just rely on this function and/or extend it, or at least if org would offer the same API as url and try to align on the same conventions for non standard URL's, so that org could be a replacement to the URL package. I noticed that the URL package does not seem to make any %XX decoding, for instance on my machine: (url-generic-parse-url "file:c%3A/toto.html") evaluates to [cl-struct-url "file" nil nil nil 21 "c%3A/toto.html" nil nil nil] I also noticed that the info:FILE#NODE does not seem to be supported by Org, but it is by URL. Actually it would be even more useful to have also info:FILE#NODE::NNN with NNN being the line number within the info NODE, but url does not support the ::NNN extension which seems to be defined only in Org. VBR, Vincent. ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] %20 in file://... URL
At Fri, 26 Nov 2010 23:11:13 +0100, Vincent Belaïche wrote: > > [1 ] > > > [...] > > > > 1. The percent escaping/unescaping functions are not unicode aware; > > My understanding/feeling is that a link in a file foo.org should be > interpreted with the coding scheme of this file. I think this is not reasoble: The information about the coding system of the file where the link was created is not carried with the link. E.g. the unescaping function would have no idea about how to properly unescape the escaped chars. > Now I am surprised that you write that there is no unicode support, become > some code like this looks like unicoding the stuff: You are right: I should have said: The *escaping* function is not unicode aware. The unescaping function wasn't neither, but in the development version on Github I replace the old `org-link-unescape' with the function formerly known as `org-protocol-unhex-string'. > > 2. The percent escaping/unescaping functions require a user to > >explicitly tell which characters should be escaped; > > That should be dependant on the type of link, file and http should support > that all characters are escaped, or that no character but % and ] are escaped. Correct. The new algorithm escapes characters if one of these conditions is true: - the character is a ASCII control character (<32, 127) - the character is the percent sign - the character is a non-ASCII character (>127, unicode) - the character is in the user supplied list For unescaping there is no table, it just unescapes all percent escaped characters. > > I have a question to you: emacs has a url package to interprete url. Why does > org does not rely on this. Good question. This is something to find out: There is C-h v org-url-encoding-use-url-hexify RET org-url-encoding-use-url-hexify is a variable defined in `org.el'. Its value is nil Documentation: Not documented as a variable. This variable was added back in 2009 (commit b077f710) but seems not used at all. The only difference I can see is that you can pass org-link-escape in a table of user defined characters that should be escaped -- but not sure if this functionality is really needed. So the next step is check all functions that use escape/unescape and see if replacing the calls to org-link-escape/unescape can be replaced with calls to url-hexify/unhexify. Thanks, -- David -- OpenPGP... 0x99ADB83B5A4478E6 Jabber dmj...@jabber.org Email. dm...@ictsoc.de pgprlRtG4y6yy.pgp Description: PGP signature ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] %20 in file://... URL
At Tue, 23 Nov 2010 06:25:40 +0100, Vincent Belaïche wrote: > > >From:David Maus > >Subject: Re: [Orgmode] %20 in file://... URL > >Date:Mon, 22 Nov 2010 19:16:09 +0100 > >User-agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) > >FLIM/1.14.9 (GojÅ) APEL/10.8 Emacs/23.2 (i486-pc-linux-gnu) MULE/6.0 > >(HANACHIRUSATO) > > > >At Mon, 22 Nov 2010 16:46:44 +0100, > >Vincent Belaïche wrote: > >> I see, so I understand that you will someday modify a function creating > >> links in order to implement character escaping. I can give a hand if > >> tell me the function name. > > > >To be exact: Org already escapes some characters (C-h v > >org-link-escape-chars RET) and the colon is a candidate for beeing on > >the list. > > What does "already" exactly means ? It means that Org performs percent escaping in some cases but there are currently three problems: 1. The percent escaping/unescaping functions are not unicode aware; 2. The percent escaping/unescaping functions require a user to explicitly tell which characters should be escaped; 3. There is no clear rule in place when to escape/unescape -- that is the problem you'Ve hit. The solution for the 3rd problem is not to modify `org-open-file' but to implement the rule that says: - If a link is written in an Org file, the everything after the scheme (type) is percent escaped. IIRC this is already done for characters that would breake the parser (square brackets) but some chars are missing (the percent sign, obviously). - if a link is read from an Org file and passed to another function, the part after scheme is unescaped. These two rule would cover the problem you face: Although the link is not created by Org, it is unescaped before it is opened, so %3A would expand to ":". > > Ok, you mean that some version of org already does the job, but not the > org that is on the official Git depo ? > Yes, kind of. It's a personal working copy of the offical repository and when I am finished I either merge it into the offical one or ask someone review the changes and "pull" my version into the offical repo. Think of it as the bleeding bleeding edge -- highly unstable, not guaranteed to work at all. > > The following is just comments on the code, most of it is a matter of > taste, which you may well disagree with. > > 1. In the org.el file in the link which you provided I found also these >functions org-entry-protect-space & org-entry-restore-space which >does also some escaping, why not use a unique function Good point. > > 2. In the function org-link-escape, there is a lambda expression > >(lambda (sequence) > (format "%%%.2X" sequence)) > >The argument name should be sequence-element rather than sequence. Dto. Changed it. > > 3. In org-link-unescape, there are 3 substringing-or-concatenations, but >you could make it simpler by a single replace-match and using a > start-position in the >string-match. That would look like this (*not tested*): > > (defun org-link-unescape (str) > "Unhex hexified unicode strings as returned from the JavaScript function > encodeURIComponent. E.g. `%C3%B6' is the german Umlaut `ö'." > (setq str (or str "")) > (let ((case-fold-search t) > (pos 0)) > (while (string-match "\\(%[0-9a-f][0-9a-f]\\)+" str pos) > (setq pos (+ pos (/ (- (match-end 0) (match-beginning 0)) >3)) > str (replace-match > (org-link-unescape-compound (upcase (match-string 0 > str); hex >)) > t t str > str)) > > My feeling that the kind of code above is slightly simpler in > execution as there is only one string manipulation at each > iteration instead of two, and also easier to maintain as is has > fewer use cases (i.e. it does not really matter if the escaped > sequence is at the end of string or not). You also avoid some > intermediate variables like `replacement' as the use of > replace-match make it self explanatory that the result of > org-link-unescape-compound is a replacement. Agreed, refactoring the unescape functions is on the list. > > 3. in org-link-unescape-compound, > > (remove "" (split-string hex "%")) > > >can be replaced by (cdr (split-string hex "%")) because there is >always only one empty string in the sequence and it is in the 1st >place. Agreed. > > 4. in org-link-unescape-compound, you could
Re: [Orgmode] %20 in file://... URL
>From: David Maus >Subject: Re: [Orgmode] %20 in file://... URL >Date: Mon, 22 Nov 2010 19:16:09 +0100 >User-agent:Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) >FLIM/1.14.9 (GojÅ) APEL/10.8 Emacs/23.2 (i486-pc-linux-gnu) MULE/6.0 >(HANACHIRUSATO) > >At Mon, 22 Nov 2010 16:46:44 +0100, >Vincent Belaïche wrote: >> I see, so I understand that you will someday modify a function creating >> links in order to implement character escaping. I can give a hand if >> tell me the function name. > >To be exact: Org already escapes some characters (C-h v >org-link-escape-chars RET) and the colon is a candidate for beeing on >the list. What does "already" exactly means ? I pushed the colon '(?: . "%3A") into this org-link-escape-chars list, and I made a trial with a link like this: [[file://localhost/c%3A/msys/1.0/temp/jay.html][link]] I get this message: "if: No such file: //localhost/c%3A/msys/1.0/temp/jay.html", evaluating the full org.el on the link you gave does not make it either because I get the message that org-complete cannot be loaded. >The functions responsible for escaping/unescaping are `org-link-escape' >and `org-link-unescape' and the new implementations of these functions >can be found in > >https://github.com/dmj/dmj-org-mode/tree/feature/org-percent-escaping > Ok, you mean that some version of org already does the job, but not the org that is on the official Git depo ? >The task at hand: Anticipate the consquences of the new implementation. >I.e. what will happen to links created with the old algorithm. > I have no idea of the consequences, I can be a beta tester of it, but for the time being this code does not work with the kind of link which I use. >Patches, ideas, and comments on the modifications are welcome. > The following is just comments on the code, most of it is a matter of taste, which you may well disagree with. 1. In the org.el file in the link which you provided I found also these functions org-entry-protect-space & org-entry-restore-space which does also some escaping, why not use a unique function 2. In the function org-link-escape, there is a lambda expression (lambda (sequence) (format "%%%.2X" sequence)) The argument name should be sequence-element rather than sequence. 3. In org-link-unescape, there are 3 substringing-or-concatenations, but you could make it simpler by a single replace-match and using a start-position in the string-match. That would look like this (*not tested*): (defun org-link-unescape (str) "Unhex hexified unicode strings as returned from the JavaScript function encodeURIComponent. E.g. `%C3%B6' is the german Umlaut `ö'." (setq str (or str "")) (let ((case-fold-search t) (pos 0)) (while (string-match "\\(%[0-9a-f][0-9a-f]\\)+" str pos) (setq pos (+ pos (/ (- (match-end 0) (match-beginning 0)) 3)) str (replace-match (org-link-unescape-compound (upcase (match-string 0 str); hex )) t t str str)) My feeling that the kind of code above is slightly simpler in execution as there is only one string manipulation at each iteration instead of two, and also easier to maintain as is has fewer use cases (i.e. it does not really matter if the escaped sequence is at the end of string or not). You also avoid some intermediate variables like `replacement' as the use of replace-match make it self explanatory that the result of org-link-unescape-compound is a replacement. 3. in org-link-unescape-compound, (remove "" (split-string hex "%")) can be replaced by (cdr (split-string hex "%")) because there is always only one empty string in the sequence and it is in the 1st place. 4. in org-link-unescape-compound, you could have made fewer comparison by replacing code (shift (if (= 0 eat) ;; new byte (if (>= val 252) 6 (if (>= val 248) 5 (if (>= val 240) 4 (if (>= val 224) 3 (if (>= val 192) 2 0) 6)) (xor (if (= 0 eat) ;; new byte (if (>= val 252) 252 (if (>= val 248) 248 (if (>= val 240) 240 (if (>= val 224) 224 (if (>= val 192) 192 0) 128))) by (*not tested*): (shift-xor (if (= 0 eat) ;; new byte (if (>= val 252) '(6 . 252) (if (>= val 248) '(5 .
RE: [Orgmode] %20 in file://... URL
> Date: Wed, 17 Nov 2010 21:43:59 +0100 > From: dm...@ictsoc.de > To: vincent@hotmail.fr > Subject: Re: [Orgmode] %20 in file://... URL > CC: emacs-orgmode@gnu.org; carsten.domi...@gmail.com > [...] Hello, Sorry for the delay, I was on business trip. > > Thanks for sending the patch, but it won't provide a clean solution to > the problem: The function modified by your patch works under the > assumption, that for example the sequence %3A represents a percent > escaped colon. But the function that creates the link in the first > place does not percent-escape chars Er, in my situation I create the link with another package, and I *did* escaped the colon. > -- If we use just this patch, opening a link to a file literarally > called "%3A.org" will fail. > > So we need to modify all functions that create links to propertly > percent-escape the part of a link that follows the link type in order > to make all functions unescape the link. > > Good news: Reworking the percent-escaping is a work in progress on my > list[1] and if it is finished and accepted, the problem should be > solved. > > Best, > -- David I see, so I understand that you will someday modify a function creating links in order to implement character escaping. I can give a hand if tell me the function name. I also send you my patch with a git diff, just in case (with same changelog attached again). Sorry for using `diff -c', I just followed the info node `(emacs) Sending Patches' Vincent. diff --git a/lisp/org.el b/lisp/org.el index 201dd87..4e2e2c4 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -9639,9 +9639,28 @@ to search for. If LINE or SEARCH is given, the file will be opened in Emacs, unless an entry from org-file-apps that makes use of groups in a regexp matches. If the file does not exist, an error is thrown." - (let* ((file (if (equal path "") + (let* ((%xx-decoded-path + (let ((pos 0) (%xx-decoded-path path)) + (setq %xx-decoded-path path) + (while (setq pos (string-match "%\\([0-9A-F]\\)\\([0-9A-F]\\)" %xx-decoded-path pos)) + (setq pos (1+ pos) + %xx-decoded-path (replace-match + (string (let ((code 0) digit) + (dotimes (i 2) + (setq + digit (aref (match-string (1+ i) %xx-decoded-path) 0) + code (+ (if (<= digit ?9) + (- digit ?0) + (- digit 55)) + (* 16 code code)) + t t %xx-decoded-path))) + ;; remove //localhost/ prefix if any + (and (string-match "\\`//localhost/" %xx-decoded-path) + (setq %xx-decoded-path (substring %xx-decoded-path 12))) + %xx-decoded-path)) + (file (if (equal path "") buffer-file-name - (substitute-in-file-name (expand-file-name path + (substitute-in-file-name (expand-file-name %xx-decoded-path (file-apps (append org-file-apps (org-default-apps))) (apps (org-remove-if 'org-file-apps-entry-match-against-dlink-p file-apps)) 2010-11-13 Vincent Belaïche * org.el (org-open-file): Decode %XX escapes in URL with file type, so that applications other than browsers are not confused with the filename. ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] %20 in file://... URL
At Mon, 22 Nov 2010 16:46:44 +0100, Vincent Belaïche wrote: > I see, so I understand that you will someday modify a function creating > links in order to implement character escaping. I can give a hand if > tell me the function name. To be exact: Org already escapes some characters (C-h v org-link-escape-chars RET) and the colon is a candidate for beeing on the list. The functions responsible for escaping/unescaping are `org-link-escape' and `org-link-unescape' and the new implementations of these functions can be found in https://github.com/dmj/dmj-org-mode/tree/feature/org-percent-escaping The task at hand: Anticipate the consquences of the new implementation. I.e. what will happen to links created with the old algorithm. Patches, ideas, and comments on the modifications are welcome. Best, -- David -- OpenPGP... 0x99ADB83B5A4478E6 Jabber dmj...@jabber.org Email. dm...@ictsoc.de pgpA8EgRduF3q.pgp Description: PGP signature ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
RE: [Orgmode] %20 in file://... URL
> Date: Wed, 17 Nov 2010 21:43:59 +0100 > From: dm...@ictsoc.de > To: vincent@hotmail.fr > Subject: Re: [Orgmode] %20 in file://... URL > CC: emacs-orgmode@gnu.org; carsten.domi...@gmail.com > [...] Hello, Sorry for the delay, I was on business trip. > > Thanks for sending the patch, but it won't provide a clean solution to > the problem: The function modified by your patch works under the > assumption, that for example the sequence %3A represents a percent > escaped colon. But the function that creates the link in the first > place does not percent-escape chars Er, in my situation I create the link with another package, and I *did* escaped the colon. > -- If we use just this patch, opening a link to a file literarally > called "%3A.org" will fail. > > So we need to modify all functions that create links to propertly > percent-escape the part of a link that follows the link type in order > to make all functions unescape the link. > > Good news: Reworking the percent-escaping is a work in progress on my > list[1] and if it is finished and accepted, the problem should be > solved. > > Best, > -- David I see, so I understand that you will someday modify a function creating links in order to implement character escaping. I can give a hand if tell me the function name. I also send you my patch with a git diff, just in case (with same changelog attached again). Sorry for using `diff -c', I just followed the info node `(emacs) Sending Patches' Vincent. diff --git a/lisp/org.el b/lisp/org.el index 201dd87..4e2e2c4 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -9639,9 +9639,28 @@ to search for. If LINE or SEARCH is given, the file will be opened in Emacs, unless an entry from org-file-apps that makes use of groups in a regexp matches. If the file does not exist, an error is thrown." - (let* ((file (if (equal path "") + (let* ((%xx-decoded-path + (let ((pos 0) (%xx-decoded-path path)) + (setq %xx-decoded-path path) + (while (setq pos (string-match "%\\([0-9A-F]\\)\\([0-9A-F]\\)" %xx-decoded-path pos)) + (setq pos (1+ pos) + %xx-decoded-path (replace-match + (string (let ((code 0) digit) + (dotimes (i 2) + (setq + digit (aref (match-string (1+ i) %xx-decoded-path) 0) + code (+ (if (<= digit ?9) + (- digit ?0) + (- digit 55)) + (* 16 code code)) + t t %xx-decoded-path))) + ;; remove //localhost/ prefix if any + (and (string-match "\\`//localhost/" %xx-decoded-path) + (setq %xx-decoded-path (substring %xx-decoded-path 12))) + %xx-decoded-path)) + (file (if (equal path "") buffer-file-name - (substitute-in-file-name (expand-file-name path + (substitute-in-file-name (expand-file-name %xx-decoded-path (file-apps (append org-file-apps (org-default-apps))) (apps (org-remove-if 'org-file-apps-entry-match-against-dlink-p file-apps)) 2010-11-13 Vincent Belaïche * org.el (org-open-file): Decode %XX escapes in URL with file type, so that applications other than browsers are not confused with the filename. ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] %20 in file://... URL
At Sat, 13 Nov 2010 07:18:42 +0100, Vincent Belaïche wrote: > > Herein attached follows my patch. Please feel free for brickbats... > Thanks for sending the patch, but it won't provide a clean solution to the problem: The function modified by your patch works under the assumption, that for example the sequence %3A represents a percent escaped colon. But the function that creates the link in the first place does not percent-escape chars -- If we use just this patch, opening a link to a file literarally called "%3A.org" will fail. So we need to modify all functions that create links to propertly percent-escape the part of a link that follows the link type in order to make all functions unescape the link. Good news: Reworking the percent-escaping is a work in progress on my list[1] and if it is finished and accepted, the problem should be solved. Best, -- David [1] http://thread.gmane.org/gmane.emacs.orgmode/30694/focus=33179 -- OpenPGP... 0x99ADB83B5A4478E6 Jabber dmj...@jabber.org Email. dm...@ictsoc.de pgpRMD9n7TTsy.pgp Description: PGP signature ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] %20 in file://... URL
At Sat, 13 Nov 2010 07:18:42 +0100, Vincent Belaïche wrote: > > Herein attached follows my patch. Please feel free for brickbats... > Thanks for sending the patch, but it won't provide a clean solution to the problem: The function modified by your patch works under the assumption, that for example the sequence %3A represents a percent escaped colon. But the function that creates the link in the first place does not percent-escape chars -- If we use just this patch, opening a link to a file literarally called "%3A.org" will fail. So we need to modify all functions that create links to propertly percent-escape the part of a link that follows the link type in order to make all functions unescape the link. Good news: Reworking the percent-escaping is a work in progress on my list[1] and if it is finished and accepted, the problem should be solved. Best, -- David [1] http://thread.gmane.org/gmane.emacs.orgmode/30694/focus=33179 -- OpenPGP... 0x99ADB83B5A4478E6 Jabber dmj...@jabber.org Email. dm...@ictsoc.de pgpiQV40jbmeM.pgp Description: PGP signature ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] %20 in file://... URL
At Sat, 13 Nov 2010 07:18:42 +0100, Vincent Belaïche wrote: > > Herein attached follows my patch. Please feel free for brickbats... > Could I ask you to resend the patch in a format that can be applied with Git? E.g. try: git diff > my-new-patch.patch Best, -- David -- OpenPGP... 0x99ADB83B5A4478E6 Jabber dmj...@jabber.org Email. dm...@ictsoc.de pgpziGEYGzfbN.pgp Description: PGP signature ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
RE: [Orgmode] %20 in file://... URL
>From: vincent@hotmail.fr >To: emacs-orgmode@gnu.org; giovanni.rido...@yahoo.it >Subject: Re: [Orgmode] %20 in file://... URL >Date: Sat, 13 Nov 2010 07:18:42 +0100 >CC: vincent@hotmail.fr > > >[...] > >> >>Please, do! :-) >> >>Giovanni >> > >Herein attached follows my patch. Please feel free for brickbats... > > Vincent. > BTW, I made the patch based on a GIT pull, so the org.el I used should be almost the latest one --- unless people have pushed new versions since the time when I made the pull. Vincent ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] %20 in file://... URL
[...] > >Please, do! :-) > >Giovanni > Herein attached follows my patch. Please feel free for brickbats... Vincent. *** org.el.old Fri Nov 5 19:16:29 2010 --- org.el Sat Nov 13 05:50:54 2010 *** *** 9639,9647 opened in Emacs, unless an entry from org-file-apps that makes use of groups in a regexp matches. If the file does not exist, an error is thrown." ! (let* ((file (if (equal path "") buffer-file-name ! (substitute-in-file-name (expand-file-name path (file-apps (append org-file-apps (org-default-apps))) (apps (org-remove-if 'org-file-apps-entry-match-against-dlink-p file-apps)) --- 9639,9666 opened in Emacs, unless an entry from org-file-apps that makes use of groups in a regexp matches. If the file does not exist, an error is thrown." ! (let* ((%xx-decoded-path ! (let ((pos 0) (%xx-decoded-path path)) ! (setq %xx-decoded-path path) ! (while (setq pos (string-match "%\\([0-9A-F]\\)\\([0-9A-F]\\)" %xx-decoded-path pos)) ! (setq pos (1+ pos) ! %xx-decoded-path (replace-match ! (string (let ((code 0) digit) ! (dotimes (i 2) ! (setq ! digit (aref (match-string (1+ i) %xx-decoded-path) 0) ! code (+ (if (<= digit ?9) ! (- digit ?0) ! (- digit 55)) ! (* 16 code code)) ! t t %xx-decoded-path))) ! ;; remove //localhost/ prefix if any ! (and (string-match "\\`//localhost/" %xx-decoded-path) ! (setq %xx-decoded-path (substring %xx-decoded-path 12))) ! %xx-decoded-path)) ! (file (if (equal path "") buffer-file-name ! (substitute-in-file-name (expand-file-name %xx-decoded-path (file-apps (append org-file-apps (org-default-apps))) (apps (org-remove-if 'org-file-apps-entry-match-against-dlink-p file-apps)) 2010-11-13 Vincent Belaïche * org.el (org-open-file): Decode %XX escapes in URL with file type, so that applications other than browsers are not confused with the filename. ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] %20 in file://... URL
Vincent Belaïche writes: > Sorry to dwell on it: I am just wondering, is there any reason why %20 > and suchlikes are not supported with the file: protocole ? > > I not, I can submit a patch to correct this and have the % constructs > decoded. Please, do! :-) Giovanni ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
RE: [Orgmode] %20 in file://... URL
Hello, Sorry to dwell on it: I am just wondering, is there any reason why %20 and suchlikes are not supported with the file: protocole ? I not, I can submit a patch to correct this and have the % constructs decoded. BR, Vincent. ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
RE: [Orgmode] %20 in file://... URL
> From: giovanni.rido...@yahoo.it > To: vincent@hotmail.fr > Subject: Re: [Orgmode] %20 in file://... URL > Date: Tue, 26 Oct 2010 17:39:55 +0200 > CC: emacs-orgmode@gnu.org > [...] > > *But*, Vincent, why do you use "%3A" when the colon ":" works? ?-/ > The reason is quite simple, I wrote a package called w32utils.el which does several things useful for MSWindows users, among which converting path of marked files in Dired mode to various format, like URL for navigator, for LaTeX hyperref, for orgmode, and backslashed MSWindows path (that was the primary purpose), amongst other. This package also makes it easier to open bash shell buffers (using MSYS bash) under emacs in MSWindows, and also allows some easier update of the default-directory variable when you make CD to some path (like changing the driver letter, or using the MSYS fstab links). If you are interested in that I can put w32utils.el on my page and send you a link. This is still very experimental, and the manual is not uptodate. Well, this package makes a strict and complete conversion of paths to URL, and this is the reason for the %3A. > cheers, > > Giovanni > BR, Vincent. > ___ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] %20 in file://... URL
Vincent Belaïche writes: >>> My Org mode version is not able to interprete any `%20' or suchlike >>> escape codes in file://... URL >>Which Org mode version are you using? >> >>M-x org-version RET >> >>And can you give an example of a link that does not work as expected? >> > > [[file://localhost/c%3A/msys/1.0/temp/foo.html][link]] > > the file exists on my PC as > > c:\msys\1.0\temp\foo.html > > I am under MSWindows XP. > M-x org-version > => Org-mode version 7.01 > Emacs version? Here: Org-mode version 7.01trans commit-4cd56cfa7b93902544acb32848e36ee4004239a3 GNU Emacs 23.2.1 (i386-mingw-nt5.1.2600) of 2010-05-08 on G41R2F1 Windows XP I can confirm the error. [[file://localhost/c:/Documents and Settings/A/Documenti/z-emacs/a.org][link-localh-:]] works [[file://c:/Documents and Settings/A/Documenti/z-emacs/a.org][link-c:]] works, faster [[file://localhost/c%3/Documents and Settings/A/Documenti/z-emacs/a.org][link-localh% ]] does not work the way expected: it opens a "a.org" buffer, but the path is wrong: if you try to save the "a.org" buffer C-x w the directory proposed is: .../A/Documenti/z-emacs/ *But*, Vincent, why do you use "%3A" when the colon ":" works? ?-/ cheers, Giovanni ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] %20 in file://... URL
>Which Org mode version are you using? > >M-x org-version RET > >And can you give an example of a link that does not work as expected? > >Best, > -- David > Hello, Thanks for the feedback. Here is an example of failing link: [[file://localhost/c%3A/msys/1.0/temp/foo.html][link]] the file exists on my PC as c:\msys\1.0\temp\foo.html I am under MSWindows XP. M-x org-version => Org-mode version 7.01 This is more or less the latest version on emacs trunk. BR, Vincent. ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] %20 in file://... URL
At Sun, 24 Oct 2010 22:49:12 +0200, Vincent Belaïche wrote: > > Hello, > > My Org mode version is not able to interprete any `%20' or suchlike > escape codes in file://... URL, is that normal ? Which Org mode version are you using? M-x org-version RET And can you give an example of a link that does not work as expected? Best, -- David -- OpenPGP... 0x99ADB83B5A4478E6 Jabber dmj...@jabber.org Email. dm...@ictsoc.de pgpT2yrxggnUy.pgp Description: PGP signature ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode