From: Ferdinand Pieper <fer@pie.tf> To: emacs-orgmode@gnu.org Subject: Additonal slashes in URI sent to org-protocol Date: Sun, 05 Apr 2020 15:56:51 +0200 [thread overview] Message-ID: <871rp29gt8.fsf@pie.tf> (raw) [-- Attachment #1: Type: text/plain, Size: 2835 bytes --] Hi everyone, I was trying to set up org-protocol with Firefox (version 74.0) running under Windows 10. Unfortunately there seems to be an issue with additional slashes added to the URI so org-protocol can not parse it. I setup a bookmark as mentioned in [1]. I changed the bookmark content to the new style of org-protocol links as described in [2], resulting in: --8<---------------cut here---------------start------------->8--- javascript:location.href='org-protocol://capture?template=L&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&body='+encodeURIComponent(window.getSelection()) --8<---------------cut here---------------end--------------->8--- To setup the forwarding to Emacs running inside WSL I used a registry entry as described on the same page: --8<---------------cut here---------------start------------->8--- REGEDIT4 [HKEY_CLASSES_ROOT\org-protocol] @="URL:Org Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\org-protocol\shell] [HKEY_CLASSES_ROOT\org-protocol\shell\open] [HKEY_CLASSES_ROOT\org-protocol\shell\open\command] @="\"C:\\Windows\\System32\\wsl.exe\" emacsclient \"%1\"" --8<---------------cut here---------------end--------------->8--- Somehow Firefox adds another slash inbetween ~capture~ and the questionmark, so that Emacs receives this call, which I extracted from a Backtrace: --8<---------------cut here---------------start------------->8--- * org-protocol-check-filename-for-protocol("/mnt/c/Windows/system32/org-protocol:/capture/?template=L&url=https%3A%2F%2Forgmode.org%2F&title=Org%20mode%20for%20Emacs%20–%20Your%20Life%20in%20Plain%20Text&body=" (("/mnt/c/Windows/system32/org-protocol:/capture/?template=L&url=https%3A%2F%2Forgmode.org%2F&title=Org%20mode%20for%20Emacs%20–%20Your%20Life%20in%20Plain%20Text&body=")) #<process server <68>>) --8<---------------cut here---------------end--------------->8--- The format ~org-protocol:/capture/?template=L...~ still seems to be within the HTML spec. But the additional slash makes the function ~org-protocol-check-filename-for-protocol~ fail to recognize the URI as a capture call. See also the discussion in [3]. I also tried the same bookmark in Chromium (version 83.0) but it also adds the additional slash. I attached a proposed patch to allow URIs with and without the slash. I'd be happy to know if anybody has a working setup using the bookmark above or similar or if there are other solutions which do not require this patch. Otherwise please let me know what is left to do to get this patch applied. Thanks! Footnotes: [1] https://orgmode.org/worg/org-contrib/org-protocol.html#org120a44e [2] https://orgmode.org/Changes_old.html#org18864d9 [3] https://github.com/sprig/org-capture-extension/issues/41#issuecomment-578499266 [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-org-protocol-Allow-slashes-after-sub-protocol.patch --] [-- Type: text/x-patch, Size: 1432 bytes --] From a476821ebecd9649b2c88a86a0562c757bb2c3a0 Mon Sep 17 00:00:00 2001 From: fpi <git@pie.tf> Date: Fri, 3 Apr 2020 19:12:01 +0200 Subject: [PATCH] org-protocol: Allow slashes after sub-protocol This change lets org-protocol handle URIs with additional slashes before the start of the query string, e.g. org-protocol:/capture/?template=... instead of org-protocol:/capture?template=... --- lisp/org-protocol.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/org-protocol.el b/lisp/org-protocol.el index 55a534d0d..8fbff9611 100644 --- a/lisp/org-protocol.el +++ b/lisp/org-protocol.el @@ -617,13 +617,13 @@ CLIENT is ignored." (let ((proto (concat the-protocol (regexp-quote (plist-get (cdr prolist) :protocol)) - "\\(:/+\\|\\?\\)"))) + "\\(:/+\\|/*\\?\\)"))) (when (string-match proto fname) (let* ((func (plist-get (cdr prolist) :function)) (greedy (plist-get (cdr prolist) :greedy)) (split (split-string fname proto)) (result (if greedy restoffiles (cadr split))) - (new-style (string= (match-string 1 fname) "?"))) + (new-style (string-match (match-string 1 fname) "/*?"))) (when (plist-get (cdr prolist) :kill-client) (message "Greedy org-protocol handler. Killing client.") (server-edit)) -- 2.25.0
next reply other threads:[~2020-04-05 18:35 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-04-05 13:56 Ferdinand Pieper [this message] 2020-04-05 14:55 Ferdinand Pieper 2020-05-06 1:04 ` Nicolas Goaziou 2020-05-09 13:07 ` Ferdinand Pieper 2020-05-22 15:56 ` Bastien
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=871rp29gt8.fsf@pie.tf \ --to=fer@pie.tf \ --cc=emacs-orgmode@gnu.org \ --subject='Re: Additonal slashes in URI sent to org-protocol' \ /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
Code repositories for project(s) associated with this 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).