emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* IMPORTANT Modified link escaping in Org mode
@ 2011-02-17 19:57 David Maus
  2011-02-19 11:11 ` Bastien
  2011-03-13 13:37 ` Michael Brand
  0 siblings, 2 replies; 6+ messages in thread
From: David Maus @ 2011-02-17 19:57 UTC (permalink / raw)
  To: org-mode


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

Best,
  -- 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."
  (interactive)
  (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))
      (widen)
      (show-all)
      (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"
		      escape
		      (buffer-name)
		      (- (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.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-03-13 16:04 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-17 19:57 IMPORTANT Modified link escaping in Org mode David Maus
2011-02-19 11:11 ` 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

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