Remember to cover the basics, that is, what you expected to happen and what in fact did happen. You don't know how to make a good report? See http://orgmode.org/manual/Feedback.html#Feedback Your bug report will be posted to the Org-mode mailing list. ------------------------------------------------------------------------ I have an Org link as follows: [[message://m2k4n46n5p.wl%dave@boostpro.com]] When I try to `C-c C-o' it, opening fails because the link-handling code sees this string for the link: "m2k4n46n5p.wlÚve@boostpro.com" which you may notice is different. If I do (org-open-link-from-string "message://m2k4n46n5p.wl%dave@boostpro.com") on the other hand, it works just fine. Emacs : GNU Emacs 23.3.1 (x86_64-apple-darwin10.8.0, Carbon Version 1.6.0 AppKit 1038.36) of 2011-09-12 on pluto.luannocracy.com Package: Org-mode version 7.7 (release_7.7.292.g0d4e8.dirty) current state: ============== (setq org-x-backends '(ox-org ox-redmine) org-agenda-deadline-leaders '("D: " "D%d: ") org-clock-in-switch-to-state "STARTED" org-agenda-skip-scheduled-if-deadline-is-shown t org-export-latex-after-initial-vars-hook '(org-beamer-after-initial-vars) org-x-redmine-title-prefix-match-function 'org-x-redmine-title-prefix-match org-speed-command-hook '(org-speed-command-default-hook org-babel-speed-command-hook) org-agenda-custom-commands '(("E" "Errands (next 3 days)" tags "Errand&TODO<>\"DONE\"&TODO<>\"CANCELED\"&STYLE<>\"habit\"&SCHEDULED<\"<+3d>\"" ((org-agenda-overriding-header "Errands (next 3 days)"))) ("A" "Priority #A tasks" agenda "" ((org-agenda-ndays 1) (org-agenda-overriding-header "Today's priority #A tasks: ") (org-agenda-skip-function (quote (org-agenda-skip-entry-if (quote notregexp) "\\=.*\\[#A\\]"))) ) ) ("b" "Priority #A and #B tasks" agenda "" ((org-agenda-ndays 1) (org-agenda-overriding-header "Today's priority #A and #B tasks: ") (org-agenda-skip-function (quote (org-agenda-skip-entry-if (quote regexp) "\\=.*\\[#C\\]"))) ) ) ("p" "Un-prioritized tasks" agenda "" ((org-agenda-overriding-header "Today's un-prioritized tasks: ") (org-agenda-skip-function (quote (org-agenda-skip-entry-if (quote notregexp) "\\=.*\\[#[ABC]\\]"))) ) ) ("w" "Waiting/delegated tasks" tags "TODO=\"WAITING\"|TODO=\"DELEGATED\"" ((org-agenda-overriding-header "Waiting/delegated tasks:") (org-agenda-sorting-strategy (quote (todo-state-up priority-down category-up)))) ) ("u" "Unscheduled tasks" tags "AREA<>\"Work\"&TODO<>\"\"&TODO<>{DONE\\|CANCELED\\|NOTE\\|PROJECT}" ((org-agenda-files (quote ("~/Documents/Tasks/todo.txt"))) (org-agenda-overriding-header "Unscheduled tasks: ") (org-agenda-skip-function (quote (org-agenda-skip-entry-if (quote scheduled) (quote deadline) (quote timestamp) (quote regexp) "\\* \\(DEFERRED\\|SOMEDAY\\)") ) ) (org-agenda-sorting-strategy (quote (priority-down)))) ) ("U" "Deferred tasks" tags "TODO=\"DEFERRED\"" ((org-agenda-files (quote ("~/Documents/Tasks/todo.txt"))) (org-agenda-overriding-header "Deferred tasks:")) ) ("Y" "Someday tasks" tags "TODO=\"SOMEDAY\"" ((org-agenda-overriding-header "Someday tasks:"))) ("G" "Ledger tasks (all)" alltodo "" ((org-agenda-files (quote ("~/src/ledger/plan/TODO"))) (org-agenda-overriding-header "Ledger tasks:") (org-agenda-sorting-strategy (quote (todo-state-up priority-down category-up)))) ) ("N" "Ledger tasks (all, alphabetical)" alltodo "" ((org-agenda-files (quote ("~/src/ledger/plan/TODO"))) (org-agenda-overriding-header "Ledger tasks, alphabetical:") (org-agenda-sorting-strategy (quote (alpha-up)))) ) ("l" "Ledger tasks" tags-todo "TODO<>{SOMEDAY\\|DEFERRED}" ((org-agenda-files (quote ("~/src/ledger/plan/TODO"))) (org-agenda-overriding-header "Ledger tasks:") (org-agenda-sorting-strategy (quote (todo-state-up priority-down category-up))) (org-agenda-skip-function (quote (org-agenda-skip-entry-if (quote regexp) "\\=.*\\[#C\\]"))) ) ) ("L" "Ledger tasks not in Bugzilla" tags "TODO<>{DONE\\|TESTED\\|CLOSED\\|NOTE}&LEVEL=2" ((org-agenda-files (quote ("~/src/ledger/plan/TODO"))) (org-agenda-overriding-header "Ledger tasks:") (org-agenda-sorting-strategy (quote (todo-state-up priority-down category-up))) (org-agenda-skip-function (quote (org-agenda-skip-entry-if (quote regexp) "#")))) ) ("r" "Uncategorized items" tags "CATEGORY=\"Inbox\"&LEVEL=2" ((org-agenda-overriding-header "Uncategorized items"))) ("V" "Unscheduled work-related tasks" tags "AREA=\"Work\"&TODO<>\"\"&TODO<>{DONE\\|CANCELED\\|NOTE\\|PROJECT}" ((org-agenda-overriding-header "Unscheduled work-related tasks") (org-agenda-files (quote ("~/Documents/Tasks/todo.txt"))) (org-agenda-sorting-strategy (quote (category-up))) (org-agenda-skip-function (quote (org-agenda-skip-entry-if (quote scheduled) (quote deadline) (quote timestamp) (quote regexp) "\\* \\(DEFERRED\\|SOMEDAY\\)") ) ) ) ) ("W" "Work-related tasks" tags "AREA=\"Work\"&TODO<>\"\"&TODO<>{DONE\\|CANCELED\\|NOTE\\|PROJECT}" ((org-agenda-overriding-header "Work-related tasks") (org-agenda-files (quote ("~/Documents/Tasks/todo.txt"))) (org-agenda-sorting-strategy (quote (category-up priority-down todo-state-up alpha-up))) (org-agenda-skip-function (quote (org-agenda-skip-entry-if (quote regexp) "\\* \\(DEFERRED\\|SOMEDAY\\)"))) ) ) ) org-agenda-files '("~/Documents/Tasks/todo.txt" "~/src/ledger/plan/TODO") org-agenda-include-diary t org-blocker-hook '(org-block-todo-from-children-or-siblings-or-parent) org-src-fontify-natively t org-agenda-tags-column -100 org-hide-leading-stars t org-clock-into-drawer "LOGBOOK" org-completion-use-ido t org-metaup-hook '(org-babel-load-in-session-maybe) org-capture-templates '(("t" "Task" entry (file+headline "~/Documents/Tasks/todo.txt" "Inbox") "* TODO %?\n SCHEDULED: %t\n :PROPERTIES:\n :ID: %(shell-command-to-string \"uuidgen\") :CREATED: %U\n :END:" :prepend t) ) org-footnote-section nil org-agenda-scheduled-leaders '("" "S%d: ") org-archive-save-context-info '(time category itags) org-after-todo-state-change-hook '(org-clock-out-if-current) org-babel-tangle-lang-exts '(("python" . "py") ("emacs-lisp" . "el")) org-agenda-text-search-extra-files '(agenda-archives) org-archive-location "TODO-archive::" org-agenda-skip-unavailable-files t org-agenda-default-appointment-duration 60 org-speed-commands-user '(("4" org-priority 68) ("5" org-priority 69) ("-" . org-priority-down) ("+" . org-priority-up)) org-time-clocksum-use-fractional t org-edit-src-content-indentation 0 org-agenda-sorting-strategy '((agenda habit-down time-up todo-state-up priority-down category-keep) (todo priority-down category-keep) (tags priority-down category-keep) (search category-keep)) org-export-blocks-postblock-hook '(org-exp-res/src-name-cleanup) org-agenda-prefix-format '((agenda . " %-11:c%?-12t% s") (timeline . " % s") (todo . " %-11:c") (tags . " %-11:c")) org-habit-preceding-days 42 org-export-latex-format-toc-function 'org-export-latex-format-toc-default org-agenda-skip-scheduled-if-done t org-x-redmine-title-prefix-function 'org-x-redmine-title-prefix org-clock-in-resume t org-tab-first-hook '(yas/org-very-safe-expand org-hide-block-toggle-maybe org-src-native-tab-command-maybe org-babel-hide-result-toggle-maybe) org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer) org-finalize-agenda-hook '(org-agenda-add-overlays) org-cycle-global-at-bob t org-confirm-shell-link-function nil org-export-first-hook '(org-beamer-initialize-open-trackers) org-clock-persist 'history org-agenda-before-write-hook '(org-agenda-add-entry-text) org-default-notes-file "~/Documents/Tasks/todo.txt" org-use-property-inheritance '("AREA") org-directory "~/Documents/Tasks/" org-agenda-persistent-filter t org-blank-before-new-entry nil org-babel-pre-tangle-hook '(save-buffer) org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers org-cycle-show-empty-lines org-optimize-window-after-visibility-change) org-export-preprocess-before-normalizing-links-hook '(org-remove-file-link-modifiers) org-use-speed-commands t org-mode-hook '(#[nil "\302\300!\210\303.\304\305\306\"\210\307 \310\311#\207" [yas/trigger-key yas/keymap make-local-variable [tab] add-to-list org-tab-first-hook yas/org-very-safe-expand define-key [tab] yas/next-field] 4] #[nil "\300\301!\207" [local-unset-key ".,"] 2] #[nil "\300\301\302\303\304$\207" [org-add-hook change-major-mode-hook org-show-block-all append local] 5] #[nil "\300\301\302\303\304$\207" [org-add-hook change-major-mode-hook org-babel-show-result-all append local] 5] org-babel-result-hide-spec org-babel-hide-all-hashes) org-clock-out-remove-zero-time-clocks t org-agenda-ndays 1 org-mobile-pre-pull-hook '(my-org-convert-incoming-items) org-ctrl-c-ctrl-c-hook '(org-babel-hash-at-point org-babel-execute-safely-maybe) org-log-buffer-setup-hook '(#[nil "\b\301Z\211.\207" [fill-column 5] 2]) org-return-follows-link t org-confirm-elisp-link-function nil org-fast-tag-selection-single-key 'expert org-todo-repeat-to-state "TODO" org-clock-modeline-total 'current org-agenda-mode-hook '(#[nil "\300\301!\207" [local-unset-key ".,"] 2]) org-agenda-start-on-weekday nil org-agenda-fontify-priorities t org-export-interblocks '((lob org-babel-exp-lob-one-liners) (src org-babel-exp-inline-src-blocks)) org-clock-out-hook '(org-clock-remove-empty-clock-drawer) org-enforce-todo-dependencies t org-agenda-skip-deadline-if-done t org-reverse-note-order t org-occur-hook '(org-first-headline-recenter) org-export-babel-evaluate nil org-mobile-post-push-hook '(#[nil "\300\301!\210\300\302!\210\300\303!\207" [shell-command "/bin/rm -f ~/Dropbox/MobileOrg/agendas.org" "perl -i -ne 'print unless /agendas\\.org/;'~/Dropbox/MobileOrg/checksums.dat" "perl -i -ne 'print unless /agendas\\.org/;'~/Dropbox/MobileOrg/index.org"] 2] ) org-drawers '("PROPERTIES" "CLOCK" "LOGBOOK" "OUT") org-export-preprocess-before-selecting-backend-code-hook '(org-beamer-select-beamer-code) org-tags-column -97 org-modules '(org-id org-info org-habit) org-agenda-auto-exclude-function 'org-my-auto-exclude-function org-export-latex-final-hook '(org-beamer-amend-header org-beamer-fix-toc org-beamer-auto-fragile-frames org-beamer-place-default-actions-for-lists) org-metadown-hook '(org-babel-pop-to-session-maybe) org-clock-idle-time 10 org-attach-method 'mv org-export-blocks '((src org-babel-exp-src-block nil) (comment org-export-blocks-format-comment t) (ditaa org-export-blocks-format-ditaa nil) (dot org-export-blocks-format-dot nil)) ) -- Dave Abrahams BoostPro Computing http://www.boostpro.com
[-- Attachment #1: Type: text/plain, Size: 1449 bytes --] At Fri, 16 Sep 2011 12:03:51 -0400, Dave Abrahams wrote: > > > > Remember to cover the basics, that is, what you expected to happen and > what in fact did happen. You don't know how to make a good report? See > > http://orgmode.org/manual/Feedback.html#Feedback > > Your bug report will be posted to the Org-mode mailing list. > ------------------------------------------------------------------------ > > I have an Org link as follows: > > [[message://m2k4n46n5p.wl%dave@boostpro.com]] > > When I try to `C-c C-o' it, opening fails because the link-handling code > sees this string for the link: > > "m2k4n46n5p.wlÚve@boostpro.com" > > which you may notice is different. If I do > > (org-open-link-from-string "message://m2k4n46n5p.wl%dave@boostpro.com") How did you enter the link into the Org file? The original link [[message://m2k4n46n5p.wl%dave@boostpro.com]] Is unescaped, but Org treats links as always percent-escaped. What happens is that "%da" is treated as a percent escaped character and unescaped after read from buffer. The link should read: message://m2k4n46n5p.wl%25dave@boostpro.com This is a troublesome situation https://lists.gnu.org/archive/html/emacs-orgmode/2011-09/msg00257.html But up to know I didn't find a solution for it. Best, -- David -- OpenPGP... 0x99ADB83B5A4478E6 Jabber.... dmjena@jabber.org Email..... dmaus@ictsoc.de [-- Attachment #2: Type: application/pgp-signature, Size: 230 bytes --]
on Fri Sep 16 2011, David Maus <dmaus-AT-ictsoc.de> wrote: > How did you enter the link into the Org file? > > The original link > > [[message://m2k4n46n5p.wl%dave@boostpro.com]] > > Is unescaped, but Org treats links as always percent-escaped. What > happens is that "%da" is treated as a percent escaped character and > unescaped after read from buffer. > > The link should read: > > message://m2k4n46n5p.wl%25dave@boostpro.com Yeah, I finally figured that out. > This is a troublesome situation > > https://lists.gnu.org/archive/html/emacs-orgmode/2011-09/msg00257.html > > But up to know I didn't find a solution for it. Hmm, well, ... the link started out as a a wanderlust link of a form more like this: [[wl:/message-id:"<m2k4n46n5p.wl%dave@boostpro.com>"/%%5BGmail%5D/All%20Mail#103387BF-79B8-4389-AD51-9550873479A1@gmail.com]] _That_ link used to work. I transformed links like that by search/replace into: [[message://m2k4n46n5p.wl%dave@boostpro.com]] So maybe it's my fault? -- Dave Abrahams BoostPro Computing http://www.boostpro.com
[-- Attachment #1: Type: text/plain, Size: 1599 bytes --] At Fri, 16 Sep 2011 14:20:50 -0400, Dave Abrahams wrote: > > > on Fri Sep 16 2011, David Maus <dmaus-AT-ictsoc.de> wrote: > > > How did you enter the link into the Org file? > > > > The original link > > > > [[message://m2k4n46n5p.wl%dave@boostpro.com]] > > > > Is unescaped, but Org treats links as always percent-escaped. What > > happens is that "%da" is treated as a percent escaped character and > > unescaped after read from buffer. > > > > The link should read: > > > > message://m2k4n46n5p.wl%25dave@boostpro.com > > Yeah, I finally figured that out. > > > This is a troublesome situation > > > > https://lists.gnu.org/archive/html/emacs-orgmode/2011-09/msg00257.html > > > > But up to know I didn't find a solution for it. > > Hmm, well, ... the link started out as a a wanderlust link of a form > more like this: > > [[wl:/message-id:"<m2k4n46n5p.wl%dave@boostpro.com>"/%%5BGmail%5D/All%20Mail#103387BF-79B8-4389-AD51-9550873479A1@gmail.com]] > > _That_ link used to work. I transformed links like that by > search/replace into: > > [[message://m2k4n46n5p.wl%dave@boostpro.com]] > > So maybe it's my fault? The original link is alread "wrong", i.e. unescaped. The key question are 1. How did you create the original link? 2. When did you create the original link? I tried taking a link with `org-store-link' and insert it with `org-insert-link' and the link was properly escaped. The link escaping was changed in November 2010, maybe the link in question is an old one? Best, -- David -- OpenPGP... 0x99ADB83B5A4478E6 Jabber.... dmjena@jabber.org Email..... dmaus@ictsoc.de [-- Attachment #2: Type: application/pgp-signature, Size: 230 bytes --]
on Tue Sep 20 2011, David Maus <dmaus-AT-ictsoc.de> wrote: > The original link is alread "wrong", i.e. unescaped. > > The key question are > > 1. How did you create the original link? I used this code: https://github.com/dabrahams/elisp/blob/master/elisp/autoload.d/wl-setup.el#L801 Is there some encoding step I should have applied? > 2. When did you create the original link? It might have been as long as a year ago > I tried taking a link with `org-store-link' and insert it with > `org-insert-link' and the link was properly escaped. > > The link escaping was changed in November 2010, maybe the link in > question is an old one? Yep. -- Dave Abrahams BoostPro Computing http://www.boostpro.com
[-- Attachment #1: Type: text/plain, Size: 999 bytes --] At Tue, 20 Sep 2011 12:24:48 -0400, Dave Abrahams wrote: > > > on Tue Sep 20 2011, David Maus <dmaus-AT-ictsoc.de> wrote: > > > The original link is alread "wrong", i.e. unescaped. > > > > The key question are > > > > 1. How did you create the original link? > > I used this code: > https://github.com/dabrahams/elisp/blob/master/elisp/autoload.d/wl-setup.el#L801 > Is there some encoding step I should have applied? Nope, the code should do the trick. The escaping is currently done when the link is inserted via `org-insert-link'. > > > 2. When did you create the original link? > > It might have been as long as a year ago > > > I tried taking a link with `org-store-link' and insert it with > > `org-insert-link' and the link was properly escaped. > > > > The link escaping was changed in November 2010, maybe the link in > > question is an old one? > > Yep. Good. This explains it. Best, -- David -- OpenPGP... 0x99ADB83B5A4478E6 Jabber.... dmjena@jabber.org Email..... dmaus@ictsoc.de [-- Attachment #2: Type: application/pgp-signature, Size: 230 bytes --]
on Thu Sep 22 2011, David Maus <dmaus-AT-ictsoc.de> wrote: >> > The link escaping was changed in November 2010, maybe the link in >> > question is an old one? >> >> Yep. > > Good. This explains it. I think it's unfortunate that link escaping should have been changed in a backward-incompatible way. Seems like the "right" thing to do would have been to add a fallback to the old interpretation if the new one failed. -- Dave Abrahams BoostPro Computing http://www.boostpro.com
[-- Attachment #1: Type: text/plain, Size: 1703 bytes --] At Thu, 22 Sep 2011 10:13:18 -0400, Dave Abrahams wrote: > > > on Thu Sep 22 2011, David Maus <dmaus-AT-ictsoc.de> wrote: > > >> > The link escaping was changed in November 2010, maybe the link in > >> > question is an old one? > >> > >> Yep. > > > > Good. This explains it. > > I think it's unfortunate that link escaping should have been changed in > a backward-incompatible way. Seems like the "right" thing to do would > have been to add a fallback to the old interpretation if the new one > failed. True, but the problem is that AFAIK there is now way to programmatically check if the new escpaing/unescaping fails. There is this function: http://orgmode.org/worg/org-hacks.html#check-old-link-escapes ,---- | Starting with version 7.5 Org uses percent escaping more consistently | and with a modified algorithm to determine which characters to escape | and how. | | As a side effect this modified behaviour might break existing links if | they contain a sequence of characters that look like a percent escape | (e.g. [0-9A-Fa-f]{2}) but are in fact not a percent escape. | | The function below can be used to perform a preliminary check for such | links in an Org mode file. It will run through all links in the file | and issue a warning if it finds a percent escape sequence which is not | in old Org's list of known percent escapes. `---- that might at least tell you if there is a problematic link in an Org mode buffer. What to do if the func finds a possibly problematic sequence depends on the link. In the "%dave"-case escaping the percent sign (% => %25) could be sufficient. Best, -- David -- OpenPGP... 0x99ADB83B5A4478E6 Jabber.... dmjena@jabber.org Email..... dmaus@ictsoc.de [-- Attachment #2: Type: application/pgp-signature, Size: 230 bytes --]