Re: [O] [PATCH] org-protocol: Pass optional value using query in url to capture from protocol.
* lisp/org-protocol.el: (org-protocol-convert-query-to-plist): New function. (org-protocol-do-capture): Use new function. (org-protocol-data-separator): Change default separator. 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). --- Hello, Bastien I fixed and resend a patch. Thanks, Ryo lisp/org-protocol.el | 18 +++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/lisp/org-protocol.el b/lisp/org-protocol.el index 2a804ad..d676c39 100644 --- a/lisp/org-protocol.el +++ b/lisp/org-protocol.el @@ -267,10 +267,12 @@ 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 + :version 24.4 + :package-version '(Org . 8.0) :type 'string) ;;; Helper functions: @@ -291,7 +293,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 +413,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 +433,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 +442,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)
Re: [O] [PATCH] org-protocol: Pass optional value using query in url to capture from protocol.
Hi Ryo, Ryo TAKAISHI ryo.takaish...@gmail.com writes: * lisp/org-protocol.el: (org-protocol-convert-query-to-plist): New function. (org-protocol-do-capture): Use new function. (org-protocol-data-separator): Change default separator. Applied, thanks a lot! -- Bastien
Re: [O] [PATCH] org-protocol: Pass optional value using query in url to capture from protocol.
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 b...@altern.org 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
Re: [O] [PATCH] org-protocol: Pass optional value using query in url to capture from protocol.
Hello, Bastien I will to assign my copyright to the FSF. I sent request-assign-future.txt to ass...@gnu.org now. Regards, Ryo Bastien b...@altern.org writes: 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!
Re: [O] [PATCH] org-protocol: Pass optional value using query in url to capture from protocol.
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
[O] [PATCH] org-protocol: Pass optional value using query in url to capture from protocol.
* 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 31f6fb2..2fa7c76 100644 --- a/lisp/org-protocol.el +++ b/lisp/org-protocol.el @@ -273,7 +273,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 @@ -297,7 +297,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) @@ -436,6 +436,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 capture-func) Support `org-capture' and `org-remember' alike. CAPTURE-FUNC is either the symbol `org-remember' or `org-capture'. @@ -449,6 +457,7 @@ CAPTURE-FUNC is either the symbol `org-remember' or `org-capture'. (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 remember-annotation-functions) (setq org-stored-links @@ -458,7 +467,8 @@ CAPTURE-FUNC is either the symbol `org-remember' or `org-capture'. :link url :description title :annotation orglink - :initial region) + :initial region + :query query) (raise-frame) (funcall capture-func nil template))) -- 1.7.9.6 (Apple Git-31.1)