mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-08-24 16:32:51 +00:00
dcf34971f6
Geert Kloosterman writes: > When an org link is created from an URL containing a hex escape > `org-make-link-string' creates a link that ends up corrupted the moment > it is followed (e.g. using `org-open-at-point'). > > I've traced this back to `org-link-escape' and `org-link-unescape'. The > following shows how the hex code "%2B" is converted to a "+" after an > escaping round trip: > > (org-link-unescape (org-link-escape > "http://some.host.com/form?&id=blah%2Bblah")) > ==> > "http://some.host.com/form?&id=blah+blah" > > In my case this small change ended up in a broken URL. > > Additionally, when the URL-escape happens to be in lower case (or > otherwise not present in `org-link-escape-chars') we end up with an > error: > > (org-link-unescape (org-link-escape > "http://some.host.com/form?&id=blah%2bblah")) > ==> > Debugger entered--Lisp error: (wrong-type-argument characterp nil) > char-to-string(nil) > ... > > When `org-url-encoding-use-url-hexify' is set to `t' we do get a proper > round trip of the URL containing hex-escapes: > > (setq org-url-encoding-use-url-hexify t) > (org-link-unescape (org-link-escape > "http://some.host.com/form?&id=blah%2bblah")) > ==> > "http://some.host.com/form?&id=blah%2bblah" > > > Setting `org-url-encoding-use-url-hexify' does not fix the complete > problem however: `org-open-at-point' still did not end up with the > proper URL. Within `org-open-at-point' there is another call to > `org-link-escape': > > (org-link-escape path org-link-escape-chars-browser) > > This time a mapping table is passed in explicitly (the second argument). > However, when `org-url-encoding-use-url-hexify' is set,a this mapping > table isn't used, resulting (again) in a broken URL. > > I have attached a patch that fixes the problem: do not use url-hexify in > `org-link-escape' and `org-link-unescape' when an explicit mapping table > has been specified. > > In summary: > - the default behaviour of `org-link-escape', with > `org-url-encoding-use-url-hexify' set to nil, has some issues with > handling URLS which contain url-encoded hex escapes > - when a mapping table is passed to `org-link-escape' and > `org-link-unescape', they should probably not use url-hexify. > Patch attached. |
||
---|---|---|
.. | ||
ChangeLog | ||
ChangeLog.01 | ||
org-agenda.el | ||
org-archive.el | ||
org-ascii.el | ||
org-attach.el | ||
org-bbdb.el | ||
org-beamer.el | ||
org-bibtex.el | ||
org-clock.el | ||
org-colview-xemacs.el | ||
org-colview.el | ||
org-compat.el | ||
org-crypt.el | ||
org-ctags.el | ||
org-datetree.el | ||
org-docbook.el | ||
org-docview.el | ||
org-exp-blocks.el | ||
org-exp.el | ||
org-faces.el | ||
org-feed.el | ||
org-footnote.el | ||
org-freemind.el | ||
org-gnus.el | ||
org-habit.el | ||
org-html.el | ||
org-icalendar.el | ||
org-id.el | ||
org-indent.el | ||
org-info.el | ||
org-inlinetask.el | ||
org-irc.el | ||
org-jsinfo.el | ||
org-latex.el | ||
org-list.el | ||
org-mac-message.el | ||
org-macs.el | ||
org-mew.el | ||
org-mhe.el | ||
org-mobile.el | ||
org-mouse.el | ||
org-plot.el | ||
org-protocol.el | ||
org-publish.el | ||
org-remember.el | ||
org-rmail.el | ||
org-src.el | ||
org-table.el | ||
org-timer.el | ||
org-vm.el | ||
org-w3m.el | ||
org-wl.el | ||
org-xoxo.el | ||
org.el |