Hello, Bastien I resend a patch for HEAD of master branch. Thanks, Ryo. --- * lisp/org-protocol.el: (org-protocol-convert-query-to-plist): New function. (org-protocol-do-capture): Use new function. When org-protocol's url has query, org-capture get query using plist-get from store-link. For example: Url is "org-protocol:/capture:/URL/TITLE/BODY?key=value" org-capture can get (:key value) with (plist-get org-store-link-plist :query). --- lisp/org-protocol.el | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lisp/org-protocol.el b/lisp/org-protocol.el index 2a804ad..1f76e85 100644 --- a/lisp/org-protocol.el +++ b/lisp/org-protocol.el @@ -267,7 +267,7 @@ string with two characters." :group 'org-protocol :type 'string) -(defcustom org-protocol-data-separator "/+" +(defcustom org-protocol-data-separator "/+\\|\\?" "The default data separator to use. This should be a single regexp string." :group 'org-protocol @@ -291,7 +291,7 @@ nil, assume \"/+\". The results of that splitting are returned as a list. If UNHEXIFY is non-nil, hex-decode each split part. If UNHEXIFY is a function, use that function to decode each split part." - (let* ((sep (or separator "/+")) + (let* ((sep (or separator "/+\\|\\?")) (split-parts (split-string data sep))) (if unhexify (if (fboundp unhexify) @@ -411,6 +411,14 @@ Now template ?b will be used." (message "Item captured.")) nil) +(defun org-protocol-convert-query-to-plist (query) + "Convert query string that is part of url to property list." + (if query + (apply 'append (mapcar (lambda (x) + (let ((c (split-string x "="))) + (list (intern (concat ":" (car c))) (cadr c)))) + (split-string query "&"))))) + (defun org-protocol-do-capture (info) "Support `org-capture'." (let* ((parts (org-protocol-split-data info t org-protocol-data-separator)) @@ -423,6 +431,7 @@ Now template ?b will be used." (region (or (caddr parts) "")) (orglink (org-make-link-string url (if (string-match "[^[:space:]]" title) title url))) + (query (or (org-protocol-convert-query-to-plist (cadddr parts)) "")) (org-capture-link-is-already-stored t)) ;; avoid call to org-store-link (setq org-stored-links (cons (list url title) org-stored-links)) @@ -431,7 +440,8 @@ Now template ?b will be used." :link url :description title :annotation orglink - :initial region) + :initial region + :query query) (raise-frame) (funcall 'org-capture nil template))) -- 1.7.9.6 (Apple Git-31.1) 2012/12/31 Bastien > Hi Ryo, > > I'm willing to apply this patch but since you already submitted "tiny > changes" we would need to have you sign the FSF copyright assignment. > > See > http://orgmode.org/cgit.cgi/org-mode.git/plain/request-assign-future.txt > > Let me know if you are willing to assign your copyright to the FSF. > > Thanks! > > -- > Bastien > -- Ryo Takaishi