emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Carsten Dominik <carsten.dominik@gmail.com>
To: Sebastien Delafond <sdelafond@gmx.net>
Cc: emacs-orgmode@gnu.org
Subject: Re: Links with description and '%3f' in URL fail
Date: Thu, 4 Mar 2010 21:51:42 +0100	[thread overview]
Message-ID: <87747619-BC0E-4E20-B8B1-835EB81FE56A@gmail.com> (raw)
In-Reply-To: <20100304170052.734@usenet.piggo.com>

Hi Sebastian,

could you please try if the following patch does solve this issue?

Thanks.

- Carsten

diff --git a/lisp/org.el b/lisp/org.el
index 85b74fa..59d2acf 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -7950,12 +7950,14 @@ This is the list that is used before handing  
over to the browser.")
        (url-unhex-string text)
      (setq table (or table org-link-escape-chars))
      (when text
-      (let ((re (mapconcat (lambda (x) (regexp-quote (cdr x)))
+      (let ((case-fold-search t)
+	    (re (mapconcat (lambda (x) (regexp-quote (downcase (cdr x))))
  			   table "\\|")))
  	(while (string-match re text)
  	  (setq text
  		(replace-match
-		 (char-to-string (car (rassoc (match-string 0 text) table)))
+		 (char-to-string (car (rassoc (upcase (match-string 0 text))
+					      table)))
  		 t t text)))
  	text))))




On Mar 4, 2010, at 5:06 PM, Sebastien Delafond wrote:

> Quoting from debian bug report #572404[0]:
>
>  This error is quite esoteric.  Creating a link with a '%3f' escape
>  sequence in its URL (at least HTTP ones) makes it fail to be edited
>  with C-c C-l and exported with the error:
>
>    org-link-unescape: Wrong type argument: characterp, nil
>
>  But only if the link has a description.  Other escape sequences like
>  '%3e' or '%40' or even the literal '?' corresponding to character  
> 0x3f
>  don't trigger the error.  For instance:
>
>  - http://www.example.com/x%3fx  doesn't trigger the error
>  - [[http://www.example.com/x%3fx][test]]  triggers the error
>  - [[http://www.example.com/x%3ex][test]]  doesn't trigger the error
>  - [[http://www.example.com/x?x][test]]  doesn't trigger the error
>
>  Even more strange, while '%3f' reveals the error, '%3F' does not.  I
>  guess the ``org-link-unescape`` function has some serious problems
>  with the handling of '?': when using '%3F' in an HTTP URL, it is
>  unescaped when exported to HTML, resulting most of the time in  
> invalid
>  URLs, since the '?' character separates the path from query  
> arguments.
>
>  For instance, in "http://x.org/what%3F" the '%3F' should be left as  
> is
>  instead of being exported as "http://x.org/what?".  In
>  "http://x.org/query?foo=bar", the '?' should also be left as is.
>
>  Here it's better to trust the user and leave URLs untouched than
>  trying to be too smart.
>
> It at least sounds a like strange that it'd behave diffrently  
> depending
> on whether or not there is a description alongside the link...
>
> Cheers,
>
> --Seb
>
> [0] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=572404
>
>
>
> _______________________________________________
> 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

- Carsten

  reply	other threads:[~2010-03-04 20:51 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-04 16:06 Links with description and '%3f' in URL fail Sebastien Delafond
2010-03-04 20:51 ` Carsten Dominik [this message]
2010-03-05 10:00   ` Sebastien Delafond
2010-03-05 12:37     ` Carsten Dominik

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87747619-BC0E-4E20-B8B1-835EB81FE56A@gmail.com \
    --to=carsten.dominik@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=sdelafond@gmx.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).