emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* RFC: Improvements to org-remember
@ 2008-11-23 23:25 James TD Smith
  2008-11-24  0:23 ` Samuel Wales
                   ` (4 more replies)
  0 siblings, 5 replies; 19+ messages in thread
From: James TD Smith @ 2008-11-23 23:25 UTC (permalink / raw)
  To: emacs-orgmode

I have a number of improvements to org-remember I am planning to implement. I
have briefly discussed some of them with Carsten, and I thought I should post a
detailed description here for discussion as I'm sure you will have ideas,
suggestions and criticisms of the proposed changes.

* Preliminary work
** Refactoring

  Carsten suggested that the remember handler could do with some refactoring
  before adding any new features, as it has gotten quite complicated in places.

  The longest functions are `org-remember-apply-template' and
  `org-remember-handler', so these are probably the best place to start.

  I think it would make sense to move the code to get values for remember
  expansions out of `org-remember-apply-template' into separate functions. These
  could be added to an association list indexed by the expansion character. This
  would also make it easier to add new expansions.

** Unit tests

   If we can decide on a unit testing framework, this would be an ideal
   opportunity to add some test coverage, as I'll need to do extensive testing
   to ensure I don't break anything with the refactoring or the new features. I
   have some experience with unit testing using JUnit.
   
** Plists for remember templates

   I want to change the format of remember templates to use plists. This is to
   allow introducing a number of optional parameters to control the new features
   I want to add. Org uses plists elsewhere, for example in the #+OPTIONS:
   configuration header, and #+PLOT: lines, so the syntax should already be
   familiar to org users.

   I also think it would make sense to to move some options which are currently
   set using escapes outside of the template, specifically "%!" (store
   template immediately) and "%&" (jump to entry after storing).

   For backwards compatibility, the current template format would still be
   supported, but the additional options would not be available. Defaults for the
   extra parameters would be set so if they are not present the templates would
   work as they do currently.

   The current options would be represented as below:
   - :template :: the template itself
   - :name :: the name of the template
   - :target :: The :target parameter takes the place of the current file and
		headline target specification. The parameter specifies only the
		default target; all the other options will remain available via
		numeric prefixes to C-c C-c. The available options are:
     - "<filename>:<heading>" :: a file target. If the heading is omitted,
	  			 a top-level heading will be created.
     - clock :: currently clocked task
     - current :: add under the the org headline where the point is.
     - interactive :: select a location interactively using the appropriate
		      interface
     - <function> :: call function to get the target. The function can return
		     either a marker, or a file/headline string.
   - :test :: a function, or list of major modes. The template is only
	      available if the function returns true, or the current
	      buffer is in one of the appropriate modes
   - :immediate :: replaces the %! escape; if t, the template is stored as soon
		   as all escapes are replaced.
   - :jumpto :: replaces the %& escape; if t, org jumps to the target location
		when the note is stored.

* New features
** Adding non-headline items

   For some time I have wanted to be able to use remember to add checklist
   entries and table rows as well as org headlines. To configure this, a :type
   parameter will be added to the template, which can be either headline (the
   default), list, checklist or table.

   - Table rows.

     Currently if you want to use org to record periodic measurements (for
     example see the thread about using org to manage fitness training), you
     have to use properties and column view, which has a number of limitations
     (speed, calculations). Being able to add table rows via remember would make
     it much easier to do this.

     The simplest implementation would use a template containing the appropriate
     number of table columns, for example something like

     "| %U | %^{Value 1} | %^{Value 2} |"

     This would be added to the table at the appropriate position (depending on
     the :prepend value for the template, and then formatted properly using
     `org-table-align'.

     The handler would also need to ensure that table formulae get updated
     (increment row ranges etc) and that values are recalculated (if automatic
     recalculation is enabled) after the line is added.

     An extension to this would be to include a truncated copy of the table in
     the remember buffer, with just the headers (and possibly formulae) from the
     target table, so the user could add multiple lines in the remember buffer
     and then add them to the table.

   - Checklist entries

     I use checklists a lot for breaking down tasks. Being able to add checklist
     entries using remember, with the clocked task as a target, would make it
     possible to do this without having to switch away from the buffer I was
     working in.

   - Plain list entries.

     It also be useful to be able to add plain list items. This would be like a
     more featureful version of `org-add-note', with the full range of remember
     expansions available.

** Updating completion statistics

   If the target for a remember template contains either of the completion
   status tracking cookies ([/}, [%]), these should be updated after the entry
   has been added. This should apply to both entries containing checklists, and
   entries containing other headlines.

   Also, target matching for templates should ignore the completion status
   cookies.

** Per-template insertion order

   It is currently possible to configure a remember template to add entries at
   the start or end of the target only if the target is a file, or set globally
   with `org-reverse-note-order'. It would be useful to be able to set this for
   individual templates.

   An optional :prepend parameter would control where the entry would be
   inserted. If set to t the new entry would be the first under the heading, and
   the last the if nil. The default would be whatever `org-reverse-note-order'
   is set to.

** Automatic sorting

   It would be useful to be able to automatically sort the target's entries
   after adding one using remember, for example if you want to keep entries
   sorted by TODO keyword or in alphabetical order.

   This would require two parameters:
   - :sort :: if non-nil, sort the contents of the headline the item was
	       added under with the specified function. valid options are
     - todoorder :: sort by TODO state
     - alpha :: sort alphabetically
     - numeric :: sort numerically
     - priority :: sort by priority
     - time :: sort by time
     - property :: sort by property
     - <function> :: use function to determine sort order
     - Additionally, any of the previous items postfixed with '-rev' will sort
       in reverse
   - :sortkey :: for tables, and property searches, this specifies either the
		 column or property to sort by.

* Development plan

  It will take me quite a while to implement all this so I plan on doing it in
  stages. After the preliminary work is done, each new feature will be
  implemented in a separate git branch which can be merged into the master
  branch when it's finished and properly tested. I'll post an update to the list
  when each feature is ready for testing.
  
James

--
|-<James TD Smith>-<email/ahktenzero@mohorovi.cc>-|

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-23 23:25 RFC: Improvements to org-remember James TD Smith
@ 2008-11-24  0:23 ` Samuel Wales
  2008-11-24 10:02   ` James TD Smith
  2008-11-24  3:05 ` Sebastian Rose
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 19+ messages in thread
From: Samuel Wales @ 2008-11-24  0:23 UTC (permalink / raw)
  To: James TD Smith; +Cc: emacs-orgmode

All of this looks great.  I especially like code integrity, plist
syntax, and :prefix.

Do you want more ideas for remember?

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-23 23:25 RFC: Improvements to org-remember James TD Smith
  2008-11-24  0:23 ` Samuel Wales
@ 2008-11-24  3:05 ` Sebastian Rose
  2008-11-24  3:09 ` Sebastian Rose
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 19+ messages in thread
From: Sebastian Rose @ 2008-11-24  3:05 UTC (permalink / raw)
  To: emacs-orgmode

James TD Smith <ahktenzero@mohorovi.cc> writes:
> ** Unit tests
>
>    If we can decide on a unit testing framework, this would be an ideal
>    opportunity to add some test coverage, as I'll need to do extensive testing
>    to ensure I don't break anything with the refactoring or the new features. I
>    have some experience with unit testing using JUnit.


As your the first one to really use unit tests, I suggest you use the
framework you like the most or you trust the most, what ever. In the
worst case, those tests have to be rewritten but this could happen
anyway.


As I read through the 'How you can help' thread [1], I found no basis
for a decision. The only example code on Worg uses ert [2]. Could be a
hint, since one of the active elisp people here used it at least once to
write the example code (Eric?).


Looks like simply choosing one and see how far it goes might be the way
to go here.





Regards,

  Sebastian

---- Footnotes: ---------------

 [1]  http://lists.gnu.org/archive/html/emacs-orgmode/2008-10/msg00451.html
      and previous/next messages.

 [2]  Worg.git/org-tests/ert-publish-test.el


-- 
Sebastian Rose, EMMA STIL - mediendesign, Niemeyerstr.6, 30449 Hannover

Tel.:  +49 (0)511 - 36 58 472
Fax:   +49 (0)1805 - 233633 - 11044
mobil: +49 (0)173 - 83 93 417
Http:  www.emma-stil.de

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-23 23:25 RFC: Improvements to org-remember James TD Smith
  2008-11-24  0:23 ` Samuel Wales
  2008-11-24  3:05 ` Sebastian Rose
@ 2008-11-24  3:09 ` Sebastian Rose
  2008-11-24  8:58 ` Carsten Dominik
  2008-11-24  9:50 ` Ben Alexander
  4 siblings, 0 replies; 19+ messages in thread
From: Sebastian Rose @ 2008-11-24  3:09 UTC (permalink / raw)
  To: emacs-orgmode

James TD Smith <ahktenzero@mohorovi.cc> writes:
> * New features
> ** Adding non-headline items
>    - Table rows.
>    - Checklist entries
>    - Plain list entries.
> ** Per-template insertion order
> ** Automatic sorting


Yes :-)

+1


Best,

-- 
Sebastian Rose, EMMA STIL - mediendesign, Niemeyerstr.6, 30449 Hannover
Tel.:  +49 (0)511 - 36 58 472
Fax:   +49 (0)1805 - 233633 - 11044
mobil: +49 (0)173 - 83 93 417
Http:  www.emma-stil.de

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-23 23:25 RFC: Improvements to org-remember James TD Smith
                   ` (2 preceding siblings ...)
  2008-11-24  3:09 ` Sebastian Rose
@ 2008-11-24  8:58 ` Carsten Dominik
  2008-11-24 16:57   ` Russell Adams
  2008-11-25 11:46   ` James TD Smith
  2008-11-24  9:50 ` Ben Alexander
  4 siblings, 2 replies; 19+ messages in thread
From: Carsten Dominik @ 2008-11-24  8:58 UTC (permalink / raw)
  To: James TD Smith; +Cc: emacs-orgmode


Hi James, I do like all this.  A few comments:

On Nov 24, 2008, at 12:25 AM, James TD Smith wrote:

> I have a number of improvements to org-remember I am planning to  
> implement. I
> have briefly discussed some of them with Carsten, and I thought I  
> should post a
> detailed description here for discussion as I'm sure you will have  
> ideas,
> suggestions and criticisms of the proposed changes.
>
> * Preliminary work
> ** Refactoring
>
> Carsten suggested that the remember handler could do with some  
> refactoring
> before adding any new features, as it has gotten quite complicated  
> in places.
>
> The longest functions are `org-remember-apply-template' and
> `org-remember-handler', so these are probably the best place to start.
>
> I think it would make sense to move the code to get values for  
> remember
> expansions out of `org-remember-apply-template' into separate  
> functions. These
> could be added to an association list indexed by the expansion  
> character. This
> would also make it easier to add new expansions.

Yes.  However, it is necessary o keep the sequence of handling the  
escapes,
in particular first filling in all non-interactive ones, and only then
doing the interactive ones.

>
>
> ** Unit tests
>
>  If we can decide on a unit testing framework, this would be an ideal
>  opportunity to add some test coverage, as I'll need to do extensive  
> testing
>  to ensure I don't break anything with the refactoring or the new  
> features. I
>  have some experience with unit testing using JUnit.
>
> ** Plists for remember templates

Ah, this will be a big relieve when it is implemented,
should have been like this from the start.

>
>
>  I want to change the format of remember templates to use plists.  
> This is to
>  allow introducing a number of optional parameters to control the  
> new features
>  I want to add. Org uses plists elsewhere, for example in the # 
> +OPTIONS:
>  configuration header, and #+PLOT: lines, so the syntax should  
> already be
>  familiar to org users.
>
>  I also think it would make sense to to move some options which are  
> currently
>  set using escapes outside of the template, specifically "%!" (store
>  template immediately) and "%&" (jump to entry after storing).

Yes, this wil be much better.

>  For backwards compatibility, the current template format would  
> still be
>  supported, but the additional options would not be available.  
> Defaults for the
>  extra parameters would be set so if they are not present the  
> templates would
>  work as they do currently.
>
>  The current options would be represented as below:
>  - :template :: the template itself
>  - :name :: the name of the template
>  - :target :: The :target parameter takes the place of the current  
> file and
> 		headline target specification. The parameter specifies only the
> 		default target; all the other options will remain available via
> 		numeric prefixes to C-c C-c. The available options are:
>    - "<filename>:<heading>" :: a file target. If the heading is  
> omitted,
> 	  			 a top-level heading will be created.


That should be a double colon, for symmetry with org-archive-location,
and to avoid problems with Windows paths.

>
>    - clock :: currently clocked task
>    - current :: add under the the org headline where the point is.
>    - interactive :: select a location interactively using the  
> appropriate
> 		      interface
>    - <function> :: call function to get the target. The function can  
> return
> 		     either a marker, or a file/headline string.
>  - :test :: a function, or list of major modes. The template is only
> 	      available if the function returns true, or the current
> 	      buffer is in one of the appropriate modes
>  - :immediate :: replaces the %! escape; if t, the template is  
> stored as soon
> 		   as all escapes are replaced.
>  - :jumpto :: replaces the %& escape; if t, org jumps to the target  
> location
> 		when the note is stored.
>
> * New features
> ** Adding non-headline items
>
>  For some time I have wanted to be able to use remember to add  
> checklist
>  entries and table rows as well as org headlines. To configure this,  
> a :type
>  parameter will be added to the template, which can be either  
> headline (the
>  default), list, checklist or table.
>
>  - Table rows.

This is an awesome idea, as are plain list items and checkboxes.

For plain list items, I guess the right thing would be to select the
first plain list under the headline, there might be several.
Also, the first table under a headline, in case there are more.



While one could have a property for explicitly selecting a type
like table row or plain-list item or checkbox,  it would also be
possible to derive this from the Remember buffer content automatically.
Which method is better?

>
>
>    Currently if you want to use org to record periodic measurements  
> (for
>    example see the thread about using org to manage fitness  
> training), you
>    have to use properties and column view, which has a number of  
> limitations
>    (speed, calculations). Being able to add table rows via remember  
> would make
>    it much easier to do this.
>
>    The simplest implementation would use a template containing the  
> appropriate
>    number of table columns, for example something like
>
>    "| %U | %^{Value 1} | %^{Value 2} |"
>
>    This would be added to the table at the appropriate position  
> (depending on
>    the :prepend value for the template, and then formatted properly  
> using
>    `org-table-align'.
>
>    The handler would also need to ensure that table formulae get  
> updated
>    (increment row ranges etc) and that values are recalculated (if  
> automatic
>    recalculation is enabled) after the line is added.
>
>    An extension to this would be to include a truncated copy of the  
> table in
>    the remember buffer, with just the headers (and possibly  
> formulae) from the
>    target table, so the user could add multiple lines in the  
> remember buffer
>    and then add them to the table.

I guess you mean here to retrive that truncated copy from the target  
location?

>
>
>  - Checklist entries
>
>    I use checklists a lot for breaking down tasks. Being able to add  
> checklist
>    entries using remember, with the clocked task as a target, would  
> make it
>    possible to do this without having to switch away from the buffer  
> I was
>    working in.
>
>  - Plain list entries.
>
>    It also be useful to be able to add plain list items. This would  
> be like a
>    more featureful version of `org-add-note', with the full range of  
> remember
>    expansions available.


I would like to add here

   - Non-org items, to simply be appended to a file.
     I believe Russel Adams had a request about this, on how to use
     remember to add entries to a ledger file, for which using a
     template would be nice.  The problem is that Org currently requires
     the target file to be in Org-mode - for good reasons, because all
     kinds of Org stuff will be executed when the new entry is added.
     We should allow for the results of a remember template to be added
     to a non-Org file.

   - With these new options, will we need to have optional two-key
     access to templates, or is single key enough?  Maybe only at a  
later
     stage if it is felt that this is really necessary.


> ** Updating completion statistics
>
>  If the target for a remember template contains either of the  
> completion
>  status tracking cookies ([/}, [%]), these should be updated after  
> the entry
>  has been added. This should apply to both entries containing  
> checklists, and
>  entries containing other headlines.
>
>  Also, target matching for templates should ignore the completion  
> status
>  cookies.
>
> ** Per-template insertion order
>
>  It is currently possible to configure a remember template to add  
> entries at
>  the start or end of the target only if the target is a file, or set  
> globally
>  with `org-reverse-note-order'. It would be useful to be able to set  
> this for
>  individual templates.
>
>  An optional :prepend parameter would control where the entry would be
>  inserted. If set to t the new entry would be the first under the  
> heading, and
>  the last the if nil. The default would be whatever `org-reverse- 
> note-order'
>  is set to.
>
> ** Automatic sorting
>
>  It would be useful to be able to automatically sort the target's  
> entries
>  after adding one using remember, for example if you want to keep  
> entries
>  sorted by TODO keyword or in alphabetical order.
>
>  This would require two parameters:
>  - :sort :: if non-nil, sort the contents of the headline the item was
> 	       added under with the specified function. valid options are
>    - todoorder :: sort by TODO state
>    - alpha :: sort alphabetically
>    - numeric :: sort numerically
>    - priority :: sort by priority
>    - time :: sort by time
>    - property :: sort by property
>    - <function> :: use function to determine sort order
>    - Additionally, any of the previous items postfixed with '-rev'  
> will sort
>      in reverse
>  - :sortkey :: for tables, and property searches, this specifies  
> either the
> 		 column or property to sort by.


Another option I would like to see is, how many empty lines should
be inserted before the entry.  Because sometimes it is nice to have
an empty line between entries, and sometimes not.  Default should be
no empty lines.

> * Development plan
>
> It will take me quite a while to implement all this so I plan on  
> doing it in
> stages. After the preliminary work is done, each new feature will be
> implemented in a separate git branch which can be merged into the  
> master
> branch when it's finished and properly tested. I'll post an update  
> to the list
> when each feature is ready for testing.


Yes, this sounds good.  The one thing we need to keep in mind is
that a significant number of people by now really depend on the
templates working, so we cannot break org-remember at any stage for
the normal user.  So my proposal would be to create a new branch in our
main repository, a branch James will be the only one to push to, using
patches and ideas from the rest of us.  If this branch is frequently
rebased to the main Org-mode master, testers could easily and without
loss of other new features switch between the Org master and the
remember branch.

Does that sound good, or would you prefer to use your own repo
for this, James?  I believe the number of testers will be larger
if you use our main repo.  If you give me your user name on
repo.or.cz, I will give you push access.

- Carsten


>
>
> James
>
> --
> |-<James TD Smith>-<email/ahktenzero@mohorovi.cc>-|
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
@ 2008-11-24  9:50 ` Ben Alexander
  2008-11-30  2:00   ` James TD Smith
  0 siblings, 1 reply; 19+ messages in thread
From: Ben Alexander @ 2008-11-24  9:50 UTC (permalink / raw)
  To: emacs-orgmode


[-- Attachment #1.1: Type: text/plain, Size: 2116 bytes --]


On 2008-Nov-24, at 04:25, emacs-orgmode-request@gnu.org wrote:

> From: James TD Smith <ahktenzero@mohorovi.cc>
> Date: 24 November 2008 01:25:57 EET
> To: emacs-orgmode@gnu.org
> Subject: [Orgmode] RFC: Improvements to org-remember
>
> * New features
> ** Adding non-headline items
>
That's a fantastic idea!
>
> ** Updating completion statistics
>
> ** Automatic sorting
>
Right now, I have a :SORT: property in my property drawer which looks  
like:
   :SORT: C-c S-6 p
This is just a reminder to me for the key chord I need to play to get  
the sort I want.  It's conveniently located near the headline and not  
too hard to open and read when I need to resort manually.

It seems to me that having an hook like 'org-remember-after-filing  
would allow people to choose what kinds of updating they wanted done  
after a remember template was used.   Mixing this with different types  
of templates may take some care: you don't want to run all the hooks  
inside a save-excursion if the point to to allow the hook to move  
point to a special place, but then all hooks would have to be written  
with that in mind. Perhaps the hooks should be run inside a (let )  
with some official bindings for markers for the following:
  - org-remember-marker-to-beginning-of-new-text
  - org-remember-marker-to-end-of-new-text
  - org-remember-marker-to-parent-headline (perhaps most useful for  
non-headline remember templates)
  - org-remember-template-type

But automatic sorting seems useful in many other contexts (like after  
scheduling or rescheduling an item, or changing priority, or editing  
the headline text) so perhaps some wishes/ideas from the list would be  
appropriate.  Could org-mode take ownership of the :SORT: property for  
headlines, and have a org-sort-file-using-property (or a org-sort- 
headline-using-property) which could be added to hook lists where-ever  
the user wanted?

Or is this too specific?  Would it be nice to have plain lists (or  
checkboxed lists) have some kind of sort property too? Where could a  
user store this data so it could be easy to see but also easy to ignore.

[-- Attachment #1.2: Type: text/html, Size: 3717 bytes --]

[-- Attachment #2: Type: text/plain, Size: 204 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-24  0:23 ` Samuel Wales
@ 2008-11-24 10:02   ` James TD Smith
  2008-11-24 19:29     ` Samuel Wales
  0 siblings, 1 reply; 19+ messages in thread
From: James TD Smith @ 2008-11-24 10:02 UTC (permalink / raw)
  To: emacs-orgmode

Hi Samuel,

On 2008-11-23 17:23:15(-0700), Samuel Wales wrote:
> All of this looks great.  I especially like code integrity, plist
> syntax, and :prefix.
> 
> Do you want more ideas for remember?

Yes. Any suggestions for new features or ways the behaviour of the remember
handler could be improved are most welcome. 
 
James

-- 
|-<James TD Smith>-<email/ahktenzero@mohorovi.cc>-|

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-24  8:58 ` Carsten Dominik
@ 2008-11-24 16:57   ` Russell Adams
  2008-11-25 11:46   ` James TD Smith
  1 sibling, 0 replies; 19+ messages in thread
From: Russell Adams @ 2008-11-24 16:57 UTC (permalink / raw)
  To: emacs-orgmode

On Mon, Nov 24, 2008 at 09:58:49AM +0100, Carsten Dominik wrote:
>
> Hi James, I do like all this.  A few comments:
>
> On Nov 24, 2008, at 12:25 AM, James TD Smith wrote:
> ...
>
>> ** Adding non-headline items
>>
>>  For some time I have wanted to be able to use remember to add  
>> checklist
>>  entries and table rows as well as org headlines. To configure this, a 
>> :type
>>  parameter will be added to the template, which can be either headline 
>> (the
>>  default), list, checklist or table.
>>
>>  - Table rows.
>
> This is an awesome idea, as are plain list items and checkboxes.
>
> For plain list items, I guess the right thing would be to select the
> first plain list under the headline, there might be several.
> Also, the first table under a headline, in case there are more.
>

Table rows would rock!

> I would like to add here
>
>   - Non-org items, to simply be appended to a file.
>     I believe Russel Adams had a request about this, on how to use
>     remember to add entries to a ledger file, for which using a
>     template would be nice.  The problem is that Org currently requires
>     the target file to be in Org-mode - for good reasons, because all
>     kinds of Org stuff will be executed when the new entry is added.
>     We should allow for the results of a remember template to be added
>     to a non-Org file.

This style of adding to non-org files essentially makes remember a
template generated data entry front end for arbitrary text.

This would make the ledger file easy. My idea was to use remember to
quickly enter time/expenses/mileage into my ledger.

Thanks for your efforts!


------------------------------------------------------------------
Russell Adams                            RLAdams@AdamsInfoServ.com

PGP Key ID:     0x1160DCB3           http://www.adamsinfoserv.com/

Fingerprint:    1723 D8CA 4280 1EC9 557F  66E8 1154 E018 1160 DCB3

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-24 10:02   ` James TD Smith
@ 2008-11-24 19:29     ` Samuel Wales
  2008-11-24 21:11       ` Carsten Dominik
  0 siblings, 1 reply; 19+ messages in thread
From: Samuel Wales @ 2008-11-24 19:29 UTC (permalink / raw)
  To: James TD Smith; +Cc: emacs-orgmode

On Mon, Nov 24, 2008 at 03:02, James TD Smith <ahktenzero@mohorovi.cc> wrote:
> Yes. Any suggestions for new features or ways the behaviour of the remember
> handler could be improved are most welcome.

In addition to the stuff already mentioned:

************* TODO remember ideas
*************** respect pop-up-windows
*************** if the target file for org-remember is already known
use the control variables from that file
that way you can have your todo sequence available
*************** if org-remember does not recognize the type,
abort completely
*************** org-remember should be reentrant
able to call itself from inside itself if you have a note
you want to add that is not related to the one you are
adding.
*************** org-remember-templates takes a character
can it take a function key?
*************** emacs-w3m tight integration with org-mode
  - might be interesting to use an org-mode file to store
    bookmarks.  this would require changing the way
    bookmarks are added, to store them in a way similar to
    org-remember.
  - perhaps antenna can also be integrated with org-mode.

[2008-09-20 Sat 18:26]
*************** org merge org-annotate-file with remember code
to allow annotating anything
also have a hook for opening files and w3m pages etc. that
will print in the minibuffer "this file/page/directory is
annotated.  press ... to see the annotation".

[2008-10-27 Mon 22:02]
[[http://orgmode.org/manual/Extensions-in-the-contrib-directory.html][Extensions
in the contrib directory - The Org Manual]]
*************** brainstorm: support asking for the template
after the note was entered.

this might complicate things too much.

this is a tricky one to design, but the philosophy is that
the time between having an idea and entering it should be
minimal.  choosing the template type is a cognitive burden
before you enter the idea.

so dedicate a remember shortcut to the concept of "let me
enter this now".  c-c c-c, it asks you details like is this
a todo item?  and which file does it go to?

you would have a remember template that allows for other
remember templates to be chosen after you enter the note.

ideally, it works like this:

  1.  call org-remember like that
  2.  enter note
  3.  c-c c-c
  4.  choose whether it's a note, journal, or shopping item
  5.  if it's note or journal, choose whether it's todo
  6.  if it's note or journal, choose tags (RET for none)
  7.  show completed buffer
  8.  y to accept; n to edit

nested plists?

P.S.  :prepend -- org-refile also needs this, separately from adding
notes in reverse order.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-24 19:29     ` Samuel Wales
@ 2008-11-24 21:11       ` Carsten Dominik
  2008-11-24 21:41         ` Samuel Wales
  0 siblings, 1 reply; 19+ messages in thread
From: Carsten Dominik @ 2008-11-24 21:11 UTC (permalink / raw)
  To: Samuel Wales; +Cc: emacs-orgmode Mailinglist

Hi Samuel,

this is hard to read.  Try, with the cursor on the first line:

C-c @        to select the subtree
C-c C-e a    to export to ASCII

The result is more readable as an Email text.

HTH

- Carsten


On Nov 24, 2008, at 8:29 PM, Samuel Wales wrote:

> On Mon, Nov 24, 2008 at 03:02, James TD Smith  
> <ahktenzero@mohorovi.cc> wrote:
>> Yes. Any suggestions for new features or ways the behaviour of the  
>> remember
>> handler could be improved are most welcome.
>
> In addition to the stuff already mentioned:
>
> ************* TODO remember ideas
> *************** respect pop-up-windows
> *************** if the target file for org-remember is already known
> use the control variables from that file
> that way you can have your todo sequence available
> *************** if org-remember does not recognize the type,
> abort completely
> *************** org-remember should be reentrant
> able to call itself from inside itself if you have a note
> you want to add that is not related to the one you are
> adding.
> *************** org-remember-templates takes a character
> can it take a function key?
> *************** emacs-w3m tight integration with org-mode
>  - might be interesting to use an org-mode file to store
>    bookmarks.  this would require changing the way
>    bookmarks are added, to store them in a way similar to
>    org-remember.
>  - perhaps antenna can also be integrated with org-mode.
>
> [2008-09-20 Sat 18:26]
> *************** org merge org-annotate-file with remember code
> to allow annotating anything
> also have a hook for opening files and w3m pages etc. that
> will print in the minibuffer "this file/page/directory is
> annotated.  press ... to see the annotation".
>
> [2008-10-27 Mon 22:02]
> [[http://orgmode.org/manual/Extensions-in-the-contrib-directory.html] 
> [Extensions
> in the contrib directory - The Org Manual]]
> *************** brainstorm: support asking for the template
> after the note was entered.
>
> this might complicate things too much.
>
> this is a tricky one to design, but the philosophy is that
> the time between having an idea and entering it should be
> minimal.  choosing the template type is a cognitive burden
> before you enter the idea.
>
> so dedicate a remember shortcut to the concept of "let me
> enter this now".  c-c c-c, it asks you details like is this
> a todo item?  and which file does it go to?
>
> you would have a remember template that allows for other
> remember templates to be chosen after you enter the note.
>
> ideally, it works like this:
>
>  1.  call org-remember like that
>  2.  enter note
>  3.  c-c c-c
>  4.  choose whether it's a note, journal, or shopping item
>  5.  if it's note or journal, choose whether it's todo
>  6.  if it's note or journal, choose tags (RET for none)
>  7.  show completed buffer
>  8.  y to accept; n to edit
>
> nested plists?
>
> P.S.  :prepend -- org-refile also needs this, separately from adding
> notes in reverse order.
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-24 21:11       ` Carsten Dominik
@ 2008-11-24 21:41         ` Samuel Wales
  2008-11-30  1:03           ` James TD Smith
  0 siblings, 1 reply; 19+ messages in thread
From: Samuel Wales @ 2008-11-24 21:41 UTC (permalink / raw)
  To: Carsten Dominik; +Cc: emacs-orgmode Mailinglist

I was trying to contribute while reducing typing to a minimum to
reduce pain, and ended up making it hard for you to read.  Apologies.

======

        remember ideas i've gathered over the past few months
        =====================================================

Author: tom <tom@noplace.invalid>
Date: 2008-11-24 14:38:05 MST


Table of Contents
=================


        + respect pop-up-windows
        + if the target file for org-remember is already known
          use the control variables from that file
          that way you can have your todo sequence available
        + if org-remember does not recognize the type,
          abort completely
        + org-remember should be reentrant
          able to call itself from inside itself if you have a note
          you want to add that is not related to the one you are
          adding.
        + org-remember-templates takes a character
          can it take a function key?
        + emacs-w3m tight integration with org-mode
          - might be interesting to use an org-mode file to store
            bookmarks.  this would require changing the way
            bookmarks are added, to store them in a way similar to
            org-remember.
          - perhaps antenna can also be integrated with org-mode.

          [2008-09-20 Sat 18:26]
        + org merge org-annotate-file with remember code
          to allow annotating anything
          also have a hook for opening files and w3m pages etc. that
          will print in the minibuffer "this file/page/directory is
          annotated.  press ... to see the annotation".

          [2008-10-27 Mon 22:02] [Extensions in the contrib directory
- The Org Manual]
        + brainstorm: support asking for the template
          after the note was entered.

          this might complicate things too much.

          this is a tricky one to design, but the philosophy is that
          the time between having an idea and entering it should be
          minimal.  choosing the template type is a cognitive burden
          before you enter the idea.

          so dedicate a remember shortcut to the concept of "let me
          enter this now".  c-c c-c, it asks you details like is this
          a todo item?  and which file does it go to?

          you would have a remember template that allows for other
          remember templates to be chosen after you enter the note.

          ideally, it works like this:

            1.  call org-remember like that
            2.  enter note
            3.  c-c c-c
            4.  choose whether it's a note, journal, or shopping item
            5.  if it's note or journal, choose whether it's todo
            6.  if it's note or journal, choose tags (RET for none)
            7.  show completed buffer
            8.  y to accept; n to edit

          nested plists?

-- 
Myalgic encephalomyelitis denialists are knowingly causing further
suffering and death by opposing biomedical research on this
fast-spreading serious disease.  Do you care about the world?
http://www.meactionuk.org.uk/What_Is_ME_What_Is_CFS.htm

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-24  8:58 ` Carsten Dominik
  2008-11-24 16:57   ` Russell Adams
@ 2008-11-25 11:46   ` James TD Smith
  2008-11-25 19:27     ` Carsten Dominik
  1 sibling, 1 reply; 19+ messages in thread
From: James TD Smith @ 2008-11-25 11:46 UTC (permalink / raw)
  To: emacs-orgmode

Hi Carsten,

On 2008-11-24 09:58:49(+0100), Carsten Dominik wrote:
> 
> Hi James, I do like all this.  A few comments:
> 
> On Nov 24, 2008, at 12:25 AM, James TD Smith wrote:
> > I think it would make sense to move the code to get values for remember
> > expansions out of `org-remember-apply-template' into separate functions.
> > These could be added to an association list indexed by the expansion
> > character. This would also make it easier to add new expansions.
> 
> Yes. However, it is necessary to keep the sequence of handling the escapes, in
> particular first filling in all non-interactive ones, and only then doing the
> interactive ones.

I'll probably use two lists, one of interactive escapes and one of
non-interactive escapes.

> > ** Plists for remember templates
> 
> Ah, this will be a big relieve when it is implemented,
> should have been like this from the start.
> 
> > I want to change the format of remember templates to use plists. This is to
> > allow introducing a number of optional parameters to control the new
> > features I want to add. Org uses plists elsewhere, for example in the #
> > +OPTIONS: configuration header, and #+PLOT: lines, so the syntax should
> > already be familiar to org users.
> >
> > I also think it would make sense to to move some options which are currently
> > set using escapes outside of the template, specifically "%!" (store template
> > immediately) and "%&" (jump to entry after storing).
> 
> Yes, this wil be much better.

I was thinking that maybe some other expansions should be moved into the template,
specifically those which don't insert their values where the % expansion is.

For example instead of 
,----
| ("Video" ?v "* TOWATCH %^{Title} %^g%^{Type}p%^{Length}p%^{Year}"
| "~/Personal/Video.org" top)
`----
we could have
,----
| (?v :name "Video" "* TOWATCH %^{Title}" :tags file :properties ("Type" "Length" "Year")
| :target "~/Personal/Video.org" :prepend t)                                                
`----

I think the latter is much better for adding properties, particularly if you
want to have a template with a lot of them.

> > For backwards compatibility, the current template format would still be
> > supported, but the additional options would not be available. Defaults for
> > the extra parameters would be set so if they are not present the templates
> > would work as they do currently.
> >
> >  The current options would be represented as below:
> >  - :template :: the template itself
> >  - :name :: the name of the template
> >  - :target :: The :target parameter takes the place of the current
> >		  file and headline target specification. The parameter
> > 		  specifies only the default target; all the other options will
> > 		  remain available via numeric prefixes to C-c C-c. The
> > 		  available options are:
> >    - "<filename>:<heading>" :: a file target. If the heading is  
> >				   omitted, a top-level heading will be created.
> 
> 
> That should be a double colon, for symmetry with org-archive-location,
> and to avoid problems with Windows paths.

Yes, it was supposed to be a double colon.
 
> > * New features
> > ** Adding non-headline items
> >
> >  For some time I have wanted to be able to use remember to add checklist
> >  entries and table rows as well as org headlines. To configure this, a :type
> >  parameter will be added to the template, which can be either headline (the
> >  default), list, checklist or table.
> >
> >  - Table rows.
> 
> This is an awesome idea, as are plain list items and checkboxes.
> 
> For plain list items, I guess the right thing would be to select the first
> plain list under the headline, there might be several. Also, the first table
> under a headline, in case there are more.
 
The plain list items would be added as direct children of the target headline.
I'm not sure having a plain list item under a headline as a target makes sense,
but it could be implemented by changing the :target specification to allow
specifying a path, so "test.org::Target::list item" would add the new entry as a
child of the first list item. This would also remove the requirement for
remember targets to have headlines which are unique in the file.

For tables it would have to be the first table under the headline, as I don't
think there is a way of identifying a particular table in an org entry. Maybe we
could use #+CAPTION, when it's been added?

> While one could have a property for explicitly selecting a type like table row
> or plain-list item or checkbox, it would also be possible to derive this from
> the Remember buffer content automatically. Which method is better?

I think using the property would be easier to implement, but automatically
figuring out what kind of entry to insert will be needed to handle entries
without templates.

> > An extension to this would be to include a truncated copy of the table in
> > the remember buffer, with just the headers (and possibly formulae) from the
> > target table, so the user could add multiple lines in the remember buffer
> > and then add them to the table.
> 
> I guess you mean here to retrive that truncated copy from the target  
> location?

Yes. 
 
> >  - Checklist entries
> >
> >    I use checklists a lot for breaking down tasks. Being able to add
> >    checklist entries using remember, with the clocked task as a target,
> >    would make it possible to do this without having to switch away from the
> >    buffer I was working in.
> >
> >  - Plain list entries.
> >
> >    It also be useful to be able to add plain list items. This would be like
> >    a more featureful version of `org-add-note', with the full range of
> >    remember expansions available.
> 
> I would like to add here
> 
>    - Non-org items, to simply be appended to a file.
>      I believe Russel Adams had a request about this, on how to use
>      remember to add entries to a ledger file, for which using a
>      template would be nice.  The problem is that Org currently requires
>      the target file to be in Org-mode - for good reasons, because all
>      kinds of Org stuff will be executed when the new entry is added.
>      We should allow for the results of a remember template to be added
>      to a non-Org file.
>
>    - With these new options, will we need to have optional two-key access to
>      templates, or is single key enough? Maybe only at a later stage if it is
>      felt that this is really necessary.

I'd like two-key access for templates anyway; I have a number of similar
templates which are scattered over the available keys and could be grouped
together more logically with two stage selection. 

While we're on the subject, I'm not sure the way org-select-remember-template
currently handles keys which don't correspond to a template is right; I think it
would make more sense to keep asking the user for a template until they select a
valid one, or choose a 'no template' option.

> Another option I would like to see is, how many empty lines should
> be inserted before the entry.  Because sometimes it is nice to have
> an empty line between entries, and sometimes not.  Default should be
> no empty lines.

That should be easy to add. What about entries added before the current contents
of the target headline? The blank lines would need to go after the newly
inserted item to maintain the proper gap between it and the headline below it.

> > * Development plan
> >
> > It will take me quite a while to implement all this so I plan on  
> > doing it in
> > stages. After the preliminary work is done, each new feature will be
> > implemented in a separate git branch which can be merged into the  
> > master
> > branch when it's finished and properly tested. I'll post an update  
> > to the list
> > when each feature is ready for testing.
> 
> Yes, this sounds good.  The one thing we need to keep in mind is
> that a significant number of people by now really depend on the
> templates working, so we cannot break org-remember at any stage for
> the normal user.  So my proposal would be to create a new branch in our
> main repository, a branch James will be the only one to push to, using
> patches and ideas from the rest of us.  If this branch is frequently
> rebased to the main Org-mode master, testers could easily and without
> loss of other new features switch between the Org master and the
> remember branch.
>
> Does that sound good, or would you prefer to use your own repo
> for this, James?  I believe the number of testers will be larger
> if you use our main repo.  If you give me your user name on
> repo.or.cz, I will give you push access.

I think using a branch in the main repo makes sense as I can push to it when I
have things which are ready for testing, and I keep using my own repo to sync
work between my computers without worrying about breaking things for anyone
testing the branch.

I don't currently have an account on repo.or.cz, but I'll sign up and send you
my details. I probably ought to sign up for Worg as well.

James

-- 
|-<James TD Smith>-<email/ahktenzero@mohorovi.cc>-|

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-25 11:46   ` James TD Smith
@ 2008-11-25 19:27     ` Carsten Dominik
  2008-11-30  2:32       ` James TD Smith
  0 siblings, 1 reply; 19+ messages in thread
From: Carsten Dominik @ 2008-11-25 19:27 UTC (permalink / raw)
  To: James TD Smith; +Cc: emacs-orgmode

Hi James,

On Nov 25, 2008, at 12:46 PM, James TD Smith wrote:

> Hi Carsten,
>
> On 2008-11-24 09:58:49(+0100), Carsten Dominik wrote:
>>
>> Hi James, I do like all this.  A few comments:
>>
>> On Nov 24, 2008, at 12:25 AM, James TD Smith wrote:
>>> I think it would make sense to move the code to get values for  
>>> remember
>>> expansions out of `org-remember-apply-template' into separate  
>>> functions.
>>> These could be added to an association list indexed by the expansion
>>> character. This would also make it easier to add new expansions.
>>
>> Yes. However, it is necessary to keep the sequence of handling the  
>> escapes, in
>> particular first filling in all non-interactive ones, and only then  
>> doing the
>> interactive ones.
>
> I'll probably use two lists, one of interactive escapes and one of
> non-interactive escapes.

I believe it makes some sense to fill in the interactive parts
in place, while the partially filled template is visible.  The
context may help.

>
>
>>> ** Plists for remember templates
>>
>> Ah, this will be a big relieve when it is implemented,
>> should have been like this from the start.
>>
>>> I want to change the format of remember templates to use plists.  
>>> This is to
>>> allow introducing a number of optional parameters to control the new
>>> features I want to add. Org uses plists elsewhere, for example in  
>>> the #
>>> +OPTIONS: configuration header, and #+PLOT: lines, so the syntax  
>>> should
>>> already be familiar to org users.
>>>
>>> I also think it would make sense to to move some options which are  
>>> currently
>>> set using escapes outside of the template, specifically  
>>> "%!" (store template
>>> immediately) and "%&" (jump to entry after storing).
>>
>> Yes, this wil be much better.
>
> I was thinking that maybe some other expansions should be moved into  
> the template,
> specifically those which don't insert their values where the %  
> expansion is.
>
> For example instead of
> ,----
> | ("Video" ?v "* TOWATCH %^{Title} %^g%^{Type}p%^{Length}p%^{Year}"
> | "~/Personal/Video.org" top)
> `----
> we could have
> ,----
> | (?v :name "Video" "* TOWATCH %^{Title}" :tags file :properties  
> ("Type" "Length" "Year")
> | :target "~/Personal/Video.org" :prepend t)
> `----
>
> I think the latter is much better for adding properties,  
> particularly if you
> want to have a template with a lot of them.


This is an interesting idea.  The TODO state could also be done in  
this way,
maybe offering the fast selection interface for TODO states.

>
>
>>> For backwards compatibility, the current template format would  
>>> still be
>>> supported, but the additional options would not be available.  
>>> Defaults for
>>> the extra parameters would be set so if they are not present the  
>>> templates
>>> would work as they do currently.
>>>
>>> The current options would be represented as below:
>>> - :template :: the template itself
>>> - :name :: the name of the template
>>> - :target :: The :target parameter takes the place of the current
>>> 		  file and headline target specification. The parameter
>>> 		  specifies only the default target; all the other options will
>>> 		  remain available via numeric prefixes to C-c C-c. The
>>> 		  available options are:
>>>  - "<filename>:<heading>" :: a file target. If the heading is
>>> 				   omitted, a top-level heading will be created.
>>
>>
>> That should be a double colon, for symmetry with org-archive- 
>> location,
>> and to avoid problems with Windows paths.
>
> Yes, it was supposed to be a double colon.
>
>>> * New features
>>> ** Adding non-headline items
>>>
>>> For some time I have wanted to be able to use remember to add  
>>> checklist
>>> entries and table rows as well as org headlines. To configure  
>>> this, a :type
>>> parameter will be added to the template, which can be either  
>>> headline (the
>>> default), list, checklist or table.
>>>
>>> - Table rows.
>>
>> This is an awesome idea, as are plain list items and checkboxes.
>>
>> For plain list items, I guess the right thing would be to select  
>> the first
>> plain list under the headline, there might be several. Also, the  
>> first table
>> under a headline, in case there are more.
>
> The plain list items would be added as direct children of the target  
> headline.
> I'm not sure having a plain list item under a headline as a target  
> makes sense,

I agree, let's not go there.

>
> but it could be implemented by changing the :target specification to  
> allow
> specifying a path, so "test.org::Target::list item" would add the  
> new entry as a
> child of the first list item. This would also remove the requirement  
> for
> remember targets to have headlines which are unique in the file.
>
> For tables it would have to be the first table under the headline,  
> as I don't
> think there is a way of identifying a particular table in an org  
> entry. Maybe we
> could use #+CAPTION, when it's been added?

Let's just go for the first table.  I think when one
makes a table the target of a remember process, it deserves
to be the only on under a heading.

>> While one could have a property for explicitly selecting a type  
>> like table row
>> or plain-list item or checkbox, it would also be possible to derive  
>> this from
>> the Remember buffer content automatically. Which method is better?
>
> I think using the property would be easier to implement, but  
> automatically
> figuring out what kind of entry to insert will be needed to handle  
> entries
> without templates.

Will we have entries without templates?

>
>
>>> An extension to this would be to include a truncated copy of the  
>>> table in
>>> the remember buffer, with just the headers (and possibly formulae)  
>>> from the
>>> target table, so the user could add multiple lines in the remember  
>>> buffer
>>> and then add them to the table.
>>
>> I guess you mean here to retrive that truncated copy from the target
>> location?
>
> Yes.
>
>>> - Checklist entries
>>>
>>>  I use checklists a lot for breaking down tasks. Being able to add
>>>  checklist entries using remember, with the clocked task as a  
>>> target,
>>>  would make it possible to do this without having to switch away  
>>> from the
>>>  buffer I was working in.
>>>
>>> - Plain list entries.
>>>
>>>  It also be useful to be able to add plain list items. This would  
>>> be like
>>>  a more featureful version of `org-add-note', with the full range of
>>>  remember expansions available.
>>
>> I would like to add here
>>
>>  - Non-org items, to simply be appended to a file.
>>    I believe Russel Adams had a request about this, on how to use
>>    remember to add entries to a ledger file, for which using a
>>    template would be nice.  The problem is that Org currently  
>> requires
>>    the target file to be in Org-mode - for good reasons, because all
>>    kinds of Org stuff will be executed when the new entry is added.
>>    We should allow for the results of a remember template to be added
>>    to a non-Org file.
>>
>>  - With these new options, will we need to have optional two-key  
>> access to
>>    templates, or is single key enough? Maybe only at a later stage  
>> if it is
>>    felt that this is really necessary.
>
> I'd like two-key access for templates anyway; I have a number of  
> similar
> templates which are scattered over the available keys and could be  
> grouped
> together more logically with two stage selection.


Hmm.  I am not sure if the two-key selection code from the agenda can  
be easily
refactored for this case, so maybe we need to duplicate this  
functionality, or re-write the selector for agenda custom commands.

>
>
> While we're on the subject, I'm not sure the way org-select-remember- 
> template
> currently handles keys which don't correspond to a template is  
> right; I think it
> would make more sense to keep asking the user for a template until  
> they select a
> valid one, or choose a 'no template' option.

I am OK with changing this, it was mere laziness on
my side that it does not work like this right now.

>> Another option I would like to see is, how many empty lines should
>> be inserted before the entry.  Because sometimes it is nice to have
>> an empty line between entries, and sometimes not.  Default should be
>> no empty lines.
>
> That should be easy to add. What about entries added before the  
> current contents
> of the target headline? The blank lines would need to go after the  
> newly
> inserted item to maintain the proper gap between it and the headline  
> below it.

I think it is sufficient to only specify the empty lines
before the heading.  An entry that is inserted as the first child
must then simply be inserted directly after the heading and
possibly timestamps/properties, so that any empty lines
*before* the already present sibling remain.  Please do not
change this - throughout Org, it is the empty space *before*
a headline that counts.

>>> * Development plan
>>>
>>> It will take me quite a while to implement all this so I plan on
>>> doing it in
>>> stages. After the preliminary work is done, each new feature will be
>>> implemented in a separate git branch which can be merged into the
>>> master
>>> branch when it's finished and properly tested. I'll post an update
>>> to the list
>>> when each feature is ready for testing.
>>
>> Yes, this sounds good.  The one thing we need to keep in mind is
>> that a significant number of people by now really depend on the
>> templates working, so we cannot break org-remember at any stage for
>> the normal user.  So my proposal would be to create a new branch in  
>> our
>> main repository, a branch James will be the only one to push to,  
>> using
>> patches and ideas from the rest of us.  If this branch is frequently
>> rebased to the main Org-mode master, testers could easily and without
>> loss of other new features switch between the Org master and the
>> remember branch.
>>
>> Does that sound good, or would you prefer to use your own repo
>> for this, James?  I believe the number of testers will be larger
>> if you use our main repo.  If you give me your user name on
>> repo.or.cz, I will give you push access.
>
> I think using a branch in the main repo makes sense as I can push to  
> it when I
> have things which are ready for testing, and I keep using my own  
> repo to sync
> work between my computers without worrying about breaking things for  
> anyone
> testing the branch.
>
> I don't currently have an account on repo.or.cz, but I'll sign up  
> and send you
> my details. I probably ought to sign up for Worg as well.

Good.  For Worg, you need to send mail to Bastien, not through
emacs-orgmode, but directly, he will this this faster than any mails
going through the list.

One additional proposal:  Would it be useful, during the
development phase, to use a different customization variable,
org-remember-templates-2 or so?  This would allow people to
have a "safe" version of their templates to which they can fall
back if necessary, and to do all kinds of testing in the new
variable.  When things are stabilized in the end, we just
rename the new variable to the old name and be done....


- Carsten

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-24 21:41         ` Samuel Wales
@ 2008-11-30  1:03           ` James TD Smith
  2008-12-03 20:36             ` Samuel Wales
  0 siblings, 1 reply; 19+ messages in thread
From: James TD Smith @ 2008-11-30  1:03 UTC (permalink / raw)
  To: emacs-orgmode

Hi Samuel, 

I wasn't expecting this many ideas, thanks. There are some great suggestions
here, though I think some of them are outside the scope of what I am planning on
doing.

On 2008-11-24 14:41:00(-0700), Samuel Wales wrote:
> + respect pop-up-windows

Could you explain this in more detail? 

> + if the target file for org-remember is already known use the control
>   variables from that file that way you can have your todo sequence available

I'm definately adding this. Perhaps there should also be a parameter to set the
todo keywords to use for templates which don't have a known target.

> + if org-remember does not recognize the type, abort completely

Personally I'd prefer it to keep asking for a valid template if you enter a
character that doesn't correspond to any of the templates as most of the time I
do that I've hit the wrong key. You do know you can abort at the template
selection stage with C-g?

> + org-remember-templates takes a character
>   can it take a function key?

It would be possible to add this. Do you specifically want to use the F-keys, or
have you just run out of keys for templates? I'm planning on adding two-stage
selection for remember templates, which will make it possible to have many more
templates.

> + org-remember should be reentrant
>   able to call itself from inside itself if you have a note you want to add
>   that is not related to the one you are adding.

This is a limitation of remember itself, not the org remember handler. It would
be useful to be able to have multiple remember sessions running at once.

> + emacs-w3m tight integration with org-mode
>   - might be interesting to use an org-mode file to store bookmarks. this
>     would require changing the way bookmarks are added, to store them in a way
>     similar to org-remember.

I like the idea of using org-mode to store bookmarks. I use org-mode to keep
track of things I want to read online, using a remember template

'("Web reading" ?w "* TOREAD %^L\n%U %k\n%? " "~/Personal/Web.org" "Web sites to read")

which I use to add items to my reading list. I also have the following in my
.emacs:

,----[ link description function ]
| (defun ahkt-link-description (link desc)
|   "Link description generator for orgmode"
|   (cond ((string-match "https?:" link)
| 	   (with-temp-buffer
| 	    (w3m-retrieve link)
| 	    (w3m-region (point-min) (point-max))
| 	    (if (string= "text/html" (w3m-content-type link))
| 	        (replace-regexp-in-string "[ \t]+" " "
| 		 			  (replace-regexp-in-string
| 					   "\\(\n\\|
\\)" ""
| 					   (w3m-current-title))))))
| 	  ((string-match "file:\\([^:]+\\)::\\(.+\\)" link)
| 	   (let ((search (match-string-no-properties 2 link))
| 	       (filename
| 		(car (last
| 		      (split-string (match-string-no-properties 1 link) "/")))))
| 	   (format "%s: %s" filename search)))
| 	((string-match "file:\\([^:]+\\)" link)
| 	 (car (last (split-string (match-string-no-properties 1 link) "/"))))
| 	(t (or desc link))))
| 
| (setq org-make-link-description-function 'ahkt-link-description)
`----

which fills in the descriptions for links with the title from the retrieved web
page. 

>   - Perhaps antenna can also be integrated with org-mode.
>
> + org merge org-annotate-file with remember code
>   to allow annotating anything
>
>   also have a hook for opening files and w3m pages etc. that will print in the
>   minibuffer "this file/page/directory is annotated. press ... to see the
>   annotation".

Have you looked at org-registry.el in contrib? The `org-registry-show' function
will list any org files which have links to the current buffer. 

> + brainstorm: support asking for the template after the note was entered.
> 
>   this might complicate things too much.
> 
>   this is a tricky one to design, but the philosophy is that the time between
>   having an idea and entering it should be minimal. choosing the template type
>   is a cognitive burden before you enter the idea.
> 
>   so dedicate a remember shortcut to the concept of "let me enter this now".
>   c-c c-c, it asks you details like is this a todo item? and which file does
>   it go to?
> 
>   you would have a remember template that allows for other remember templates
>   to be chosen after you enter the note.
> 
>   ideally, it works like this:
> 
>   1.  call org-remember like that
>   2.  enter note
>   3.  c-c c-c
>   4.  choose whether it's a note, journal, or shopping item
>   5.  if it's note or journal, choose whether it's todo
>   6.  if it's note or journal, choose tags (RET for none)
>   7.  show completed buffer
>   8.  y to accept; n to edit

Personally I don't find selecting a template before making an entry a problem,
but I can see what ypu're getting at. I think I can implement something which
will do what you want. Suppose you have a set of templates as below:

("Note" ?n "* %^s %i%? %^g" "Notes.org" top)
("Journal" ?j "* %^s %u %^g\n%i%u%?" "Journal.org" bottom)
("Shopping" ?s "* %i%?" "Shopping.org" bottom)

where %^s is a new expansion which allows entering a todo keyword.

Currently if you call org-remember in the remember buffer, it prompts you for a
template again and applies it, which wipes out everything you have entered. If
this was changed so that the contents of the remember buffer are stored, and
inserted into appropriate places in the new template, it would be possible to
type your idea into the remember buffer, and then apply a template to it,
provided the template contains suitable expansions.  

So the process would be (with org-remember bound to C-c m):

1. C-c m RET to run org-remember and select no template.
2. Enter your idea.
3. C-c m to run org-remember again.
4. Select the appropriate template.
5. Fill in any prompts for todo keywords and tags, or leave blank as appropriate.
6. C-c C-c to file the note.

Would that be suitable?

James

-- 
|-<James TD Smith>-<email/ahktenzero@mohorovi.cc>-|

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-24  9:50 ` Ben Alexander
@ 2008-11-30  2:00   ` James TD Smith
  0 siblings, 0 replies; 19+ messages in thread
From: James TD Smith @ 2008-11-30  2:00 UTC (permalink / raw)
  To: emacs-orgmode

Hi Ben, 

On 2008-11-24 11:50:53(+0200), Ben Alexander wrote:
> On 2008-Nov-24, at 04:25, emacs-orgmode-request@gnu.org wrote:
> > ** Automatic sorting
> >
> Right now, I have a :SORT: property in my property drawer which looks  
> like:
>    :SORT: C-c S-6 p
> This is just a reminder to me for the key chord I need to play to get  
> the sort I want.  It's conveniently located near the headline and not  
> too hard to open and read when I need to resort manually.
> 
> It seems to me that having an hook like 'org-remember-after-filing  
> would allow people to choose what kinds of updating they wanted done  
> after a remember template was used.   Mixing this with different types  
> of templates may take some care: you don't want to run all the hooks  
> inside a save-excursion if the point to to allow the hook to move  
> point to a special place, but then all hooks would have to be written  
> with that in mind. Perhaps the hooks should be run inside a (let )  
> with some official bindings for markers for the following:
>   - org-remember-marker-to-beginning-of-new-text
>   - org-remember-marker-to-end-of-new-text
>   - org-remember-marker-to-parent-headline (perhaps most useful for  
> non-headline remember templates)
>   - org-remember-template-type

This is basically how I was thinking of implementing the sort after filing (and
the other post-commit update functions).

> But automatic sorting seems useful in many other contexts (like after  
> scheduling or rescheduling an item, or changing priority, or editing  
> the headline text) so perhaps some wishes/ideas from the list would be  
> appropriate.  Could org-mode take ownership of the :SORT: property for  
> headlines, and have a org-sort-file-using-property (or a org-sort- 
> headline-using-property) which could be added to hook lists where-ever  
> the user wanted?

I think it would be rather difficult to get automatic sorting working for
editing the headline text. Org doesn't have hook lists for priority or
scheduling changes either.

I do like the idea of defining a default sort for a tree. We would need
a :SORT_KEY: property as well, for sorting by property or table column, and a
#+SORT: facility for file level sorting. The property could be used to determine
a default sort for org-sort, with a new option added to select the default
(maybe C-c ^ RET).

> Or is this too specific?  Would it be nice to have plain lists (or  
> checkboxed lists) have some kind of sort property too? Where could a  
> user store this data so it could be easy to see but also easy to ignore.

I'm not sure it's necessary to be able to do this in plain lists. If a plain
list item has enough activity under it to need sorting on a regular basis its
probably worth promoting it to a headline.

--
|-<James TD Smith>-<email/ahktenzero@mohorovi.cc>-|

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-25 19:27     ` Carsten Dominik
@ 2008-11-30  2:32       ` James TD Smith
  2008-12-03  6:42         ` Carsten Dominik
  2008-12-12 14:48         ` Carsten Dominik
  0 siblings, 2 replies; 19+ messages in thread
From: James TD Smith @ 2008-11-30  2:32 UTC (permalink / raw)
  To: emacs-orgmode

Hi Carsten, 

On 2008-11-25 20:27:31(+0100), Carsten Dominik wrote:
> On Nov 25, 2008, at 12:46 PM, James TD Smith wrote:
> > On 2008-11-24 09:58:49(+0100), Carsten Dominik wrote:
> >> On Nov 24, 2008, at 12:25 AM, James TD Smith wrote:
> >>> I think it would make sense to move the code to get values for remember
> >>> expansions out of `org-remember-apply-template' into separate functions.
> >>> These could be added to an association list indexed by the expansion
> >>> character. This would also make it easier to add new expansions.
> >>
> >> Yes. However, it is necessary to keep the sequence of handling the escapes,
> >> in particular first filling in all non-interactive ones, and only then
> >> doing the interactive ones.
> >
> > I'll probably use two lists, one of interactive escapes and one of
> > non-interactive escapes.
> 
> I believe it makes some sense to fill in the interactive parts in place, while
> the partially filled template is visible. The context may help.

I agree. I'm not going to change that.

> >>> ** Plists for remember templates
> >>
> >> Ah, this will be a big relieve when it is implemented, should have been
> >> like this from the start.
> >>
> >>> I want to change the format of remember templates to use plists. This is
> >>> to allow introducing a number of optional parameters to control the new
> >>> features I want to add. Org uses plists elsewhere, for example in the
> >>> #+OPTIONS: configuration header, and #+PLOT: lines, so the syntax should
> >>> already be familiar to org users.
> >>>
> >>> I also think it would make sense to to move some options which are
> >>> currently set using escapes outside of the template, specifically "%!"
> >>> (store template immediately) and "%&" (jump to entry after storing).
> >>
> >> Yes, this wil be much better.
> >
> > I was thinking that maybe some other expansions should be moved into the
> > template, specifically those which don't insert their values where the %
> > expansion is.
> >
> > For example instead of
> > ,----
> > | ("Video" ?v "* TOWATCH %^{Title} %^g%^{Type}p%^{Length}p%^{Year}"
> > | "~/Personal/Video.org" top)
> > `----
> > we could have
> > ,----
> > | (?v :name "Video" "* TOWATCH %^{Title}" :tags file :properties  
> > |  ("Type" "Length" "Year") :target "~/Personal/Video.org" :prepend t)
> > `----
> >
> > I think the latter is much better for adding properties, particularly if you
> > want to have a template with a lot of them.
> 
> This is an interesting idea. The TODO state could also be done in this way,
> maybe offering the fast selection interface for TODO states.

Yes. An expansion for TODO states might be useful as well. 

> >> While one could have a property for explicitly selecting a type like table
> >> row or plain-list item or checkbox, it would also be possible to derive
> >> this from the Remember buffer content automatically. Which method is
> >> better?
> >
> > I think using the property would be easier to implement, but automatically
> > figuring out what kind of entry to insert will be needed to handle entries
> > without templates.
> 
> Will we have entries without templates?

Yes, for two reasons: freeform entry with the possibility of applying a template
later (see my reply to Samuel Wales' suggestions), and so remember can be used
to add non-org items (possibly with other remember handlers).

> > I'd like two-key access for templates anyway; I have a number of similar
> > templates which are scattered over the available keys and could be grouped
> > together more logically with two stage selection.
> 
> Hmm. I am not sure if the two-key selection code from the agenda can be easily
> refactored for this case, so maybe we need to duplicate this functionality, or
> re-write the selector for agenda custom commands.

Is `org-agenda-get-restriction-and-command' the method I should be looking at? 

> >> Another option I would like to see is, how many empty lines should be
> >> inserted before the entry. Because sometimes it is nice to have an empty
> >> line between entries, and sometimes not. Default should be no empty lines.
> >
> > That should be easy to add. What about entries added before the current
> > contents of the target headline? The blank lines would need to go after the
> > newly inserted item to maintain the proper gap between it and the headline
> > below it.
> 
> I think it is sufficient to only specify the empty lines before the heading.
> An entry that is inserted as the first child must then simply be inserted
> directly after the heading and possibly timestamps/properties, so that any
> empty lines *before* the already present sibling remain. Please do not change
> this - throughout Org, it is the empty space *before* a headline that counts.

OK.

> > I think using a branch in the main repo makes sense as I can push to it when
> > I have things which are ready for testing, and I keep using my own repo to
> > sync work between my computers without worrying about breaking things for
> > anyone testing the branch.
> >
> > I don't currently have an account on repo.or.cz, but I'll sign up and send
> > you my details. I probably ought to sign up for Worg as well.
> 
> Good. For Worg, you need to send mail to Bastien, not through emacs-orgmode,
> but directly, he will this this faster than any mails going through the list.
>
> One additional proposal: Would it be useful, during the development phase, to
> use a different customization variable, org-remember-templates-2 or so? This
> would allow people to have a "safe" version of their templates to which they
> can fall back if necessary, and to do all kinds of testing in the new
> variable. When things are stabilized in the end, we just rename the new
> variable to the old name and be done....

I'd prefer to have org-remember-templates-2 as an adjunct to the templates in
org-remember-templates, so in the testing version you would get all the
templates in that plus templates in org-remember-templates-2 (with templates in
org-remember-templates-2 having priority). Templates in the current format
should work in the new version.

James

-- 
|-<James TD Smith>-<email/ahktenzero@mohorovi.cc>-|

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-30  2:32       ` James TD Smith
@ 2008-12-03  6:42         ` Carsten Dominik
  2008-12-12 14:48         ` Carsten Dominik
  1 sibling, 0 replies; 19+ messages in thread
From: Carsten Dominik @ 2008-12-03  6:42 UTC (permalink / raw)
  To: James TD Smith; +Cc: emacs-orgmode


On Nov 30, 2008, at 3:32 AM, James TD Smith wrote:

> Hi Carsten,
>
> On 2008-11-25 20:27:31(+0100), Carsten Dominik wrote:
>> On Nov 25, 2008, at 12:46 PM, James TD Smith wrote:
>>> On 2008-11-24 09:58:49(+0100), Carsten Dominik wrote:
>>>> On Nov 24, 2008, at 12:25 AM, James TD Smith wrote:
>>>>> I think it would make sense to move the code to get values for  
>>>>> remember
>>>>> expansions out of `org-remember-apply-template' into separate  
>>>>> functions.
>>>>> These could be added to an association list indexed by the  
>>>>> expansion
>>>>> character. This would also make it easier to add new expansions.
>>>>
>>>> Yes. However, it is necessary to keep the sequence of handling  
>>>> the escapes,
>>>> in particular first filling in all non-interactive ones, and only  
>>>> then
>>>> doing the interactive ones.
>>>
>>> I'll probably use two lists, one of interactive escapes and one of
>>> non-interactive escapes.
>>
>> I believe it makes some sense to fill in the interactive parts in  
>> place, while
>> the partially filled template is visible. The context may help.
>
> I agree. I'm not going to change that.
>
>>>>> ** Plists for remember templates
>>>>
>>>> Ah, this will be a big relieve when it is implemented, should  
>>>> have been
>>>> like this from the start.
>>>>
>>>>> I want to change the format of remember templates to use plists.  
>>>>> This is
>>>>> to allow introducing a number of optional parameters to control  
>>>>> the new
>>>>> features I want to add. Org uses plists elsewhere, for example  
>>>>> in the
>>>>> #+OPTIONS: configuration header, and #+PLOT: lines, so the  
>>>>> syntax should
>>>>> already be familiar to org users.
>>>>>
>>>>> I also think it would make sense to to move some options which are
>>>>> currently set using escapes outside of the template,  
>>>>> specifically "%!"
>>>>> (store template immediately) and "%&" (jump to entry after  
>>>>> storing).
>>>>
>>>> Yes, this wil be much better.
>>>
>>> I was thinking that maybe some other expansions should be moved  
>>> into the
>>> template, specifically those which don't insert their values where  
>>> the %
>>> expansion is.
>>>
>>> For example instead of
>>> ,----
>>> | ("Video" ?v "* TOWATCH %^{Title} %^g%^{Type}p%^{Length}p%^{Year}"
>>> | "~/Personal/Video.org" top)
>>> `----
>>> we could have
>>> ,----
>>> | (?v :name "Video" "* TOWATCH %^{Title}" :tags file :properties
>>> |  ("Type" "Length" "Year") :target "~/Personal/ 
>>> Video.org" :prepend t)
>>> `----
>>>
>>> I think the latter is much better for adding properties,  
>>> particularly if you
>>> want to have a template with a lot of them.
>>
>> This is an interesting idea. The TODO state could also be done in  
>> this way,
>> maybe offering the fast selection interface for TODO states.
>
> Yes. An expansion for TODO states might be useful as well.
>
>>>> While one could have a property for explicitly selecting a type  
>>>> like table
>>>> row or plain-list item or checkbox, it would also be possible to  
>>>> derive
>>>> this from the Remember buffer content automatically. Which method  
>>>> is
>>>> better?
>>>
>>> I think using the property would be easier to implement, but  
>>> automatically
>>> figuring out what kind of entry to insert will be needed to handle  
>>> entries
>>> without templates.
>>
>> Will we have entries without templates?
>
> Yes, for two reasons: freeform entry with the possibility of  
> applying a template
> later (see my reply to Samuel Wales' suggestions), and so remember  
> can be used
> to add non-org items (possibly with other remember handlers).
>
>>> I'd like two-key access for templates anyway; I have a number of  
>>> similar
>>> templates which are scattered over the available keys and could be  
>>> grouped
>>> together more logically with two stage selection.
>>
>> Hmm. I am not sure if the two-key selection code from the agenda  
>> can be easily
>> refactored for this case, so maybe we need to duplicate this  
>> functionality, or
>> re-write the selector for agenda custom commands.
>
> Is `org-agenda-get-restriction-and-command' the method I should be  
> looking at?


Yes, this is where two-key commands would have to be implemented.

>
>
>>>> Another option I would like to see is, how many empty lines  
>>>> should be
>>>> inserted before the entry. Because sometimes it is nice to have  
>>>> an empty
>>>> line between entries, and sometimes not. Default should be no  
>>>> empty lines.
>>>
>>> That should be easy to add. What about entries added before the  
>>> current
>>> contents of the target headline? The blank lines would need to go  
>>> after the
>>> newly inserted item to maintain the proper gap between it and the  
>>> headline
>>> below it.
>>
>> I think it is sufficient to only specify the empty lines before the  
>> heading.
>> An entry that is inserted as the first child must then simply be  
>> inserted
>> directly after the heading and possibly timestamps/properties, so  
>> that any
>> empty lines *before* the already present sibling remain. Please do  
>> not change
>> this - throughout Org, it is the empty space *before* a headline  
>> that counts.
>
> OK.
>
>>> I think using a branch in the main repo makes sense as I can push  
>>> to it when
>>> I have things which are ready for testing, and I keep using my own  
>>> repo to
>>> sync work between my computers without worrying about breaking  
>>> things for
>>> anyone testing the branch.
>>>
>>> I don't currently have an account on repo.or.cz, but I'll sign up  
>>> and send
>>> you my details. I probably ought to sign up for Worg as well.
>>
>> Good. For Worg, you need to send mail to Bastien, not through emacs- 
>> orgmode,
>> but directly, he will this this faster than any mails going through  
>> the list.
>>
>> One additional proposal: Would it be useful, during the development  
>> phase, to
>> use a different customization variable, org-remember-templates-2 or  
>> so? This
>> would allow people to have a "safe" version of their templates to  
>> which they
>> can fall back if necessary, and to do all kinds of testing in the new
>> variable. When things are stabilized in the end, we just rename the  
>> new
>> variable to the old name and be done....
>
> I'd prefer to have org-remember-templates-2 as an adjunct to the  
> templates in
> org-remember-templates, so in the testing version you would get all  
> the
> templates in that plus templates in org-remember-templates-2 (with  
> templates in
> org-remember-templates-2 having priority). Templates in the current  
> format
> should work in the new version.


OK, sure, this is even better.

- Carsten

>
>
> James
>
> -- 
> |-<James TD Smith>-<email/ahktenzero@mohorovi.cc>-|
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-30  1:03           ` James TD Smith
@ 2008-12-03 20:36             ` Samuel Wales
  0 siblings, 0 replies; 19+ messages in thread
From: Samuel Wales @ 2008-12-03 20:36 UTC (permalink / raw)
  To: James TD Smith; +Cc: emacs-orgmode

Hi James,

Parts snipped.

James TD Smith
<ahktenzero@mohorovi.cc> wrote:
> On 2008-11-24 14:41:00(-0700), Samuel Wales wrote:
>> + respect pop-up-windows
>
> Could you explain this in more detail?

That variable controls whether the window gets split.  Some
people prefer buffer-creating commands to act like c-x 4 b
while others prefer that the whole window be used.  Those
who use somewhat large fonts need the latter because
splitting the window makes small windows.  It does not seem
to be possible to change org-remember's behavior with
same-window-buffer-names or -regexps.  That's about all I
know about it.  A dedicated variable would be OK.

>> + if org-remember does not recognize the type, abort completely
>
> Personally I'd prefer it to keep asking for a valid
> template if you enter a character that doesn't correspond

I like your proposal even better.  Ideally ^G and perhaps
esc esc esc will get you back to where you were before.

>> + org-remember-templates takes a character
>>   can it take a function key?
>
> It would be possible to add this. Do you specifically want
> to use the F-keys, or have you just run out of keys for
> templates? I'm planning on adding two-stage selection for
> remember templates, which will make it possible to have
> many more templates.

If possible, it would be nice if it were like emacs key
bindings.  Function keys can be surprisingly useful.

>> + emacs-w3m tight integration with org-mode
>>   - might be interesting to use an org-mode file to store
>>   bookmarks. this
>>     would require changing the way bookmarks are added,
>>     to store them in a way similar to org-remember.
>
> I like the idea of using org-mode to store bookmarks. I
> use org-mode to keep track of things I want to read
> online, using a remember template
>
> '("Web reading" ?w "* TOREAD %^L\n%U %k\n%? "
> "~/Personal/Web.org" "Web sites to read")
>
> which I use to add items to my reading list. I also have
> the following in my .emacs:

> which fills in the descriptions for links with the title
> from the retrieved web page.

IMO it would be good to have this stuff integrated as org
code, and, if the user sets, to replace the relevant keys
(such as v) in w3m.  Sounds like all the code is there.

There are useful possibilities here.  Remember could then
use ido to choose where in the bookmark tree, ideally
creating a parent headline if it does not exist.  Or just go
to a default location to be refiled later.  Or offer places
where you have bookmarked stuff before.

The best part is that you can have all of your bookmarks in
your org outline hierarchy where they belong.  If they are
tagged as bookmarks, then they show up in an agenda command
as a nice sparse tree of bookmarks.  Then you can call w3m,
or whatever else, from there.  No need to keep a separate
bookmark file.

This would be easier to use than the dedicated w3m bookmark
mechanism.

And it would work for files and directories also.  You can
bookmark some code that you are working on, if you want.

Remember seems like the right place to do most of this.

>>   - Perhaps antenna can also be integrated with org-mode.

Extension #1 to the bookmark idea.

Antenna is a way of keeping up with site changes.  In w3m,
it is a separate command from bookmarks, but there is no
reason that both antenna and bookmarks could not use the
same mechanism.  In org, this would be powerful.  For
example, a bookmark could have properties, and among those
properties would be the site's last-modified timestamp or
your last-checked timestamp.  Then without visiting the
pages you can run a command to see which pages have changed.

Where remember comes in is that remember helps you store
those bookmarks.

You might want to limit the scope of your code, but I
thought I'd propose it anyway in case there is interest.

The bookmark idea is much more important than antenna.

>>
>> + org merge org-annotate-file with remember code
>>   to allow annotating anything

> Have you looked at org-registry.el in contrib? The
> `org-registry-show' function will list any org files which
> have links to the current buffer.

Extension #2 to the bookmark idea.

My idea is to always have annotations available for
emacs-w3m, dired, files, like org-annotate-file, just with
more modes.

You can see in the mode line that whatever buffer you are in
has an annotation, and you can make an annotation.  You can
also go to the annotation.

The annotations are stored in an org file anywhere in the
hierarchy.  Thus, if you want, annotations on a doctor's web
site can be stored in the entry for that doctor that is in
your org file.  If you visit that web site from any source,
even Google, the mode line says that it is annotated.  Then
you can pull up that entry with a command.

Likewise with files or dired or whatever.  For example, you
can comment org.el or /etc/passwd without having to modify
them.

Remember code seems a plausible place to arrange for
choosing a location and putting a note into it.  Annotations
are like bookmarks with text that also go the other
direction.  It's natural to combine the idea of a bookmark
and the idea of an annotation.

You might want the mode line to say "there is bookmark to
this (web page, file, etc.)" as one character and "there is
a text note about this" as another character.  Thus, if you
have annotated a file and the file is unmodified, you will
see "-u:--!!" and if you have merely bookmarked the location
without commenting on it, then you will see "-u:--!-".

The bookmark idea is more important than annotations.

>
>> + brainstorm: support asking for the template after the
>> note was entered.

> 1. C-c m RET to run org-remember and select no template.
> 2. Enter your idea.
> 3. C-c m to run org-remember again.
> 4. Select the appropriate template.
> 5. Fill in any prompts for todo keywords and tags, or leave blank as appropriate.
> 6. C-c C-c to file the note.
>
> Would that be suitable?

Looks good.  Thanks for considering it.

-- 
Myalgic encephalomyelitis denialists are knowingly causing further
suffering and death by opposing biomedical research on this serious
infectious disease.  Do you care about the world?
http://www.meactionuk.org.uk/What_Is_ME_What_Is_CFS.htm

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: RFC: Improvements to org-remember
  2008-11-30  2:32       ` James TD Smith
  2008-12-03  6:42         ` Carsten Dominik
@ 2008-12-12 14:48         ` Carsten Dominik
  1 sibling, 0 replies; 19+ messages in thread
From: Carsten Dominik @ 2008-12-12 14:48 UTC (permalink / raw)
  To: James TD Smith; +Cc: emacs-orgmode

Hi James,

two more feature requests for the new remember templates:


- An :id switch which triggers automatic creation of an ID property
   You can create one by calling org-id-get-create in the entry,
   on the headline or below it.

- A :link switch (or similarly named).  When remember is called from an
   Org-file with this switch, it should create a link to the remember  
entry
   and store that link like org-store-link does.

Thanks

- Carsten

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2008-12-12 14:48 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-11-23 23:25 RFC: Improvements to org-remember James TD Smith
2008-11-24  0:23 ` Samuel Wales
2008-11-24 10:02   ` James TD Smith
2008-11-24 19:29     ` Samuel Wales
2008-11-24 21:11       ` Carsten Dominik
2008-11-24 21:41         ` Samuel Wales
2008-11-30  1:03           ` James TD Smith
2008-12-03 20:36             ` Samuel Wales
2008-11-24  3:05 ` Sebastian Rose
2008-11-24  3:09 ` Sebastian Rose
2008-11-24  8:58 ` Carsten Dominik
2008-11-24 16:57   ` Russell Adams
2008-11-25 11:46   ` James TD Smith
2008-11-25 19:27     ` Carsten Dominik
2008-11-30  2:32       ` James TD Smith
2008-12-03  6:42         ` Carsten Dominik
2008-12-12 14:48         ` Carsten Dominik
2008-11-24  9:50 ` Ben Alexander
2008-11-30  2:00   ` James TD Smith

Code repositories for project(s) associated with this public 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).