[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Orgmode] [Patch] New implementation of the Org remember process rea
From: |
Sebastian Rose |
Subject: |
Re: [Orgmode] [Patch] New implementation of the Org remember process ready for comments and testing |
Date: |
Tue, 22 Jun 2010 16:29:29 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
Carsten Dominik <address@hidden> writes:
> Wooooooooooow, that was incredibly fast!
>
> :-)
>
> template keys used to be characters, now in org-capture.el they are strings.
> Does the patch handle this correctly?
I wondering about that, too. But some nice person changed
org-remember.el to take care for that (See
`org-select-remember-template').
Sebastian
>
> - Carsten
>
>
>
> On Jun 22, 2010, at 4:20 PM, Sebastian Rose wrote:
>
>> Carsten Dominik <address@hidden> writes:
>>> 3 Why a new name?
>>> ~~~~~~~~~~~~~~~~~~
>>>
>>> I have - at least for now - chosen a new name for the new setup:
>>> ` org-capture'. There are two reasons for this:
>>
>> In the manual it is "Capture - Refile - Archive". I remember searching
>> for "Remember" and never found it :)
>>
>>
>>> 5 Setup
>>> ~~~~~~~~
>>>
>>> To use the new setup, do the following:
>>>
>>> 1. Run
>>>
>>> M-x org-capture-import-remember-templates RET
>>
>> Worked perfectly here :)
>>
>> I tested all my important templates and they work.
>> Abandoning org-remember seems painless.
>>
>>
>>> '(("t" "templates adding table lines")
>>> ("ta" "add to table a" table-line (file+headline "~/notes.org" "Table
>>> A))
>>> ("tb" "add to table b" table-line (file+headline "~/notes.org" "Table
>>> B))
>>> ("tc" "add to table c" table-line (file+headline "~/notes.org" "Table
>>> C)))
>>>
>>> When starting capture, you can then first press "t" and then see
>>> the individual options.
>>
>> This is great. Number of templates is constantly growing and the new
>> features will increase the speed of this process.
>>
>>
>>> 7 Request for comments
>>> ~~~~~~~~~~~~~~~~~~~~~~~
>>>
>>> None of what I describe is set in stone yet - let me know if you have
>>> comments, change requests or other ideas.
>>>
>>> My feeling right now is that this should become the default capture
>>> system, and that we will keep the current org-remember in the
>>> distribution for quite some time, for compatibility.
>>
>>
>> Good track I guess.
>>
>>
>>
>>
>> Here's the tested and working patch for org-protocol.el.
>>
>> To use `org-remember' and/or `org-capture' alike, copy your org-
>> remember
>> link and change
>>
>> javascript:location.href='org-protocol://remember://'+...
>>
>> to
>>
>> javascript:location.href='org-protocol://capture://'+...
>>
>>
>> The template char used is the same for both --- which is OK for me, but
>> could be changed.
>>
>>
>>
>>
>> diff --git a/lisp/org-protocol.el b/lisp/org-protocol.el
>> index 0642227..88676f4 100644
>> --- a/lisp/org-protocol.el
>> +++ b/lisp/org-protocol.el
>> @@ -87,12 +87,17 @@
>> ;; pushes the browsers URL to the `kill-ring' for yanking. This handler
>> is
>> ;; triggered through the sub-protocol \"store-link\".
>> ;;
>> -;; * Call `org-protocol-remember' by using the sub-protocol \"remember\".
>> If
>> -;; Org-mode is loaded, emacs will pop-up a remember buffer and fill the
>> +;; * Call `org-protocol-capture' by using the sub-protocol \"capture\".
>> If
>> +;; Org-mode is loaded, emacs will pop-up a capture buffer and fill the
>> ;; template with the data provided. I.e. the browser's URL is inserted as
>> an
>> ;; Org-link of which the page title will be the description part. If text
>> ;; was select in the browser, that text will be the body of the entry.
>> ;;
>> +;; * Call `org-protocol-remember' by using the sub-protocol \"remember\".
>> +;; This is provided for backward compatibility.
>> +;; You may read `org-capture' as `org-remember' throughout this file if
>> +;; you still use `org-remember'.
>> +;;
>> ;; You may use the same bookmark URL for all those standard handlers and just
>> ;; adjust the sub-protocol used:
>> ;;
>> @@ -101,7 +106,7 @@
>> ;; encodeURIComponent(document.title)+'/'+
>> ;; encodeURIComponent(window.getSelection())
>> ;;
>> -;; The handler for the sub-protocol \"remember\" detects an optional
>> template
>> +;; The handler for the sub-protocol \"capture\" detects an optional template
>> ;; char that, if present, triggers the use of a special template.
>> ;; Example:
>> ;;
>> @@ -143,6 +148,7 @@ for `org-protocol-the-protocol' and sub-procols defined
>> in
>>
>> (defconst org-protocol-protocol-alist-default
>> '(("org-remember" :protocol "remember" :function org-
>> protocol-remember :kill-client t)
>> + ("org-capture" :protocol "capture" :function org-
>> protocol-capture :kill-client t)
>> ("org-store-link" :protocol "store-link" :function org-
>> protocol-store-link)
>> ("org-open-source" :protocol "open-source" :function org-
>> protocol-open-source))
>> "Default protocols to use.
>> @@ -260,7 +266,6 @@ Here is an example:
>> :group 'org-protocol
>> :type 'string)
>>
>> -
>> ;;; Helper functions:
>>
>> (defun org-protocol-sanitize-uri (uri)
>> @@ -443,51 +448,73 @@ The sub-protocol used to reach this function is set in
>> (defun org-protocol-remember (info)
>> "Process an org-protocol://remember:// style url.
>>
>> +The location for a browser's bookmark has to look like this:
>> +
>> + javascript:location.href='org-protocol://remember://'+ \\
>> + encodeURIComponent(location.href)+'/' \\
>> + encodeURIComponent(document.title)+'/'+ \\
>> + encodeURIComponent(window.getSelection())
>> +
>> +See the docs for `org-protocol-capture' for more information."
>> +
>> + (if (and (boundp 'org-stored-links)
>> + (or (fboundp 'org-capture))
>> + (org-protocol-do-capture info 'org-remember))
>> + (message "Org-mode not loaded."))
>> + nil)
>> +
>> +(defun org-protocol-capture (info)
>> + "Process an org-protocol://capture:// style url.
>> +
>> The sub-protocol used to reach this function is set in
>> `org-protocol-protocol-alist'.
>>
>> This function detects an URL, title and optional text, separated by '/'
>> The location for a browser's bookmark has to look like this:
>>
>> - javascript:location.href='org-protocol://remember://'+ \\
>> + javascript:location.href='org-protocol://capture://'+ \\
>> encodeURIComponent(location.href)+'/' \\
>> encodeURIComponent(document.title)+'/'+ \\
>> encodeURIComponent(window.getSelection())
>>
>> By default, it uses the character `org-protocol-default-template-key',
>> -which should be associated with a template in `org-remember-
>> templates'.
>> +which should be associated with a template in `org-capture-
>> templates'.
>> But you may prepend the encoded URL with a character and a slash like so:
>>
>> - javascript:location.href='org-protocol://org-store-link://b/'+ ...
>> + javascript:location.href='org-protocol://capture://b/'+ ...
>>
>> Now template ?b will be used."
>> -
>> (if (and (boundp 'org-stored-links)
>> - (fboundp 'org-remember))
>> - (let* ((parts (org-protocol-split-data info t))
>> - (template (or (and (= 1 (length (car parts))) (pop parts))
>> - org-protocol-default-template-key))
>> - (url (org-protocol-sanitize-uri (car parts)))
>> - (type (if (string-match "^\\([a-z]+\\):" url)
>> - (match-string 1 url)))
>> - (title (or (cadr parts) ""))
>> - (region (or (caddr parts) ""))
>> - (orglink (org-make-link-string
>> - url (if (string-match "[^[:space:]]" title) title url)))
>> - remember-annotation-functions)
>> - (setq org-stored-links
>> - (cons (list url title) org-stored-links))
>> - (kill-new orglink)
>> - (org-store-link-props :type type
>> - :link url
>> - :description title
>> - :initial region)
>> - (raise-frame)
>> - (org-remember nil (string-to-char template)))
>> -
>> - (message "Org-mode not loaded."))
>> + (or (fboundp 'org-capture))
>> + (org-protocol-do-capture info 'org-capture))
>> + (message "Org-mode not loaded."))
>> nil)
>>
>> +(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'."
>> + (let* ((parts (org-protocol-split-data info t))
>> + (template (or (and (= 1 (length (car parts))) (pop parts))
>> + org-protocol-default-template-key))
>> + (url (org-protocol-sanitize-uri (car parts)))
>> + (type (if (string-match "^\\([a-z]+\\):" url)
>> + (match-string 1 url)))
>> + (title(or (cadr parts) ""))
>> + (region (or (caddr parts) ""))
>> + (orglink (org-make-link-string
>> + url (if (string-match "[^[:space:]]" title) title url)))
>> + remember-annotation-functions)
>> + (setq org-stored-links
>> + (cons (list url title) org-stored-links))
>> + (kill-new orglink)
>> + (org-store-link-props :type type
>> + :link url
>> + :description title
>> + :initial region)
>> + (raise-frame)
>> + (funcall capture-func nil template)))
>> +
>> +
>> (defun org-protocol-open-source (fname)
>> "Process an org-protocol://open-source:// style url.
>>
>>
>>
>>
>> Best wishes
>>
>> Sebastian
>
> - Carsten
>
>
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sebastian Rose Fachinformatiker / Anwendungsentwicklung
Viktoriastr. 22 Entwicklung von Anwendungen mit freien Werkzeugen
30451 Hannover und Bibliotheken.
0173 83 93 417 address@hidden address@hidden
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- [Orgmode] New implementation of the Org remember process ready for comments and testing, Carsten Dominik, 2010/06/22
- [Orgmode] Re: New implementation of the Org remember process ready for comments and testing, Sébastien Vauban, 2010/06/22
- Re: [Orgmode] [Patch] New implementation of the Org remember process ready for comments and testing, Sebastian Rose, 2010/06/22
- Re: [Orgmode] [Patch] New implementation of the Org remember process ready for comments and testing, Carsten Dominik, 2010/06/22
- Re: [Orgmode] [Patch] New implementation of the Org remember process ready for comments and testing, Carsten Dominik, 2010/06/22
- Re: [Orgmode] [Patch] New implementation of the Org remember process ready for comments and testing, Carsten Dominik, 2010/06/22
- [Orgmode] Re: [Patch] New implementation of the Org remember process ready for comments and testing, Ulf Stegemann, 2010/06/23
- Re: [Orgmode] Re: [Patch] New implementation of the Org remember process ready for comments and testing, Sebastian Rose, 2010/06/23
- Re: [Orgmode] Re: [Patch] New implementation of the Org remember process ready for comments and testing, Carsten Dominik, 2010/06/23
- [Orgmode] Re: [Patch] New implementation of the Org remember process ready for comments and testing, Ulf Stegemann, 2010/06/23
- Re: [Orgmode] Re: [Patch] New implementation of the Org remember process ready for comments and testing, Sebastian Rose, 2010/06/23
- Re: [Orgmode] Re: [Patch] New implementation of the Org remember process ready for comments and testing, Carsten Dominik, 2010/06/23
- Re: [Orgmode] Re: [Patch] New implementation of the Org remember process ready for comments and testing, Sebastian Rose, 2010/06/23