emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: David Maus <dmaus@ictsoc.de>
To: org-mode <emacs-orgmode@gnu.org>
Subject: IMPORTANT Modified link escaping in Org mode
Date: Thu, 17 Feb 2011 20:57:09 +0100	[thread overview]
Message-ID: <87k4gysacq.wl%dmaus@ictsoc.de> (raw)

[-- Attachment #1.1.1: Type: text/plain, Size: 1615 bytes --]

Hello everybody,

I've just pushed a series of commits to current master that modifies
Org modes link escaping functions.

Percent escaping is used in Org mode to escape certain characters in
links that would either break the parser (e.g. square brackets in link
target oder description) or are not allowed to appear in a particular
link type (e.g. non-ascii characters in a http: link).

With this change in place Org will apply percent escaping and
unescaping more consistently especially for non-ascii characters.
Additionally some of the outstanding bugs or glitches concerning
percent escaped links are solved.

However, this change has the potential to break existing links in your
documents in at least one case: Links that contain a literal percent
sign followed by two characters in [0-9a-fA-f] might break if this
sequence of characters is /not/ a percent escape.

E.g. a link to a directory literally called "foo%45bar" will break
because the new unescaping function will happily interpret the "%45"
as a percent encoded letter "E".

To detect at least some of such problematic links you can run the
attached command `dmaus/org-check-percent-escapes' in a Org mode
buffer.  It will scan all links in the buffer and issue a warning for
each link that contains a sequence that matches aformentioned pattern
and is not one of the escape sequences used by Org up to know.

If you experience any problems with this change please don't forget to
Cc: me so the complaints will end up in my main mailbox.

  -- David
OpenPGP... 0x99ADB83B5A4478E6
Jabber.... dmjena@jabber.org
Email..... dmaus@ictsoc.de

[-- Attachment #1.1.2: dmaus-org-check-percent-escapes.el --]
[-- Type: application/octet-stream, Size: 849 bytes --]

(defun dmaus/org-check-percent-escapes ()
  "*Check buffer for possibly problematic old link escapes."
  (when (eq major-mode 'org-mode)
    (let ((old-escapes '("%20" "%5B" "%5D" "%E0" "%E2" "%E7" "%E8" "%E9"
			 "%EA" "%EE" "%F4" "%F9" "%FB" "%3B" "%3D" "%2B")))
      (unless (boundp 'warning-suppress-types)
	(setq warning-suppress-types nil))
      (goto-char (point-min))
      (while (re-search-forward org-any-link-re nil t)
	(let ((end (match-end 0)))
	  (goto-char (match-beginning 0))
	  (while (re-search-forward "%[0-9a-zA-Z]\\{2\\}" end t)
	    (let ((escape (match-string-no-properties 0)))
	      (unless (member (upcase escape) old-escapes)
		(warn "Found unknown percent escape sequence %s at buffer %s, position %d"
		      (- (point) 3))))))))))

[-- Attachment #1.2: Type: application/pgp-signature, Size: 230 bytes --]

[-- Attachment #2: Type: text/plain, Size: 201 bytes --]

Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.

             reply	other threads:[~2011-02-17 19:57 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-17 19:57 David Maus [this message]
2011-02-19 11:11 ` IMPORTANT Modified link escaping in Org mode Bastien
2011-02-20 10:34   ` David Maus
2011-02-22 11:21     ` Bastien
2011-03-13 13:37 ` Michael Brand
2011-03-13 16:04   ` David Maus

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:

  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=87k4gysacq.wl%dmaus@ictsoc.de \
    --to=dmaus@ictsoc.de \
    --cc=emacs-orgmode@gnu.org \


* 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


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