From mboxrd@z Thu Jan 1 00:00:00 1970 From: Austin Frank Subject: adding semantics to properties Date: Thu, 15 May 2008 18:54:50 -0400 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0390066228==" Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JwmLf-0005DL-46 for emacs-orgmode@gnu.org; Thu, 15 May 2008 18:54:55 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JwmLd-0005D9-NQ for emacs-orgmode@gnu.org; Thu, 15 May 2008 18:54:53 -0400 Received: from [199.232.76.173] (port=47628 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JwmLd-0005D5-G3 for emacs-orgmode@gnu.org; Thu, 15 May 2008 18:54:53 -0400 Received: from main.gmane.org ([80.91.229.2]:60377 helo=ciao.gmane.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1JwmLc-0006vR-SK for emacs-orgmode@gnu.org; Thu, 15 May 2008 18:54:53 -0400 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1JwmLZ-0007q5-Mx for emacs-orgmode@gnu.org; Thu, 15 May 2008 22:54:49 +0000 Received: from cpe-74-69-93-157.rochester.res.rr.com ([74.69.93.157]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 15 May 2008 22:54:49 +0000 Received: from austin.frank by cpe-74-69-93-157.rochester.res.rr.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 15 May 2008 22:54:49 +0000 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org --===============0390066228== Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" --=-=-= Content-Transfer-Encoding: quoted-printable Hello all-- I recently had an idea for a possible generalization of some existing org-mode functionality, and I wonder whether others would find it useful and whether implementing it seems feasible. One way to think of org is as program for creating structured texts with the ability to associate arbitrary meta-data at any point in the hierarchy. This meta-data comes in two general forms: structured and unstructured. Structured meta-data in org includes todo state, priority level, tags, deadlines, schedules, timeclocks, categories, and probably some others that I'm forgetting. Unstructured meta-data is stored in properties. My proposal is that we add the ability to store structured meta-data in properties. The current forms of structured meta-data fall into classes with similar functionality. Most importantly, we have interfaces for adding, manipulating, and searching tags, timestamps, and states. As org has developed, we've seen the addition of different todo cycles and tag sets. I think it would be useful not only to be able to define these different sets, but to store them independently as well. I propose that users should be able to declare that a given property has a particular kind of interpretation, and that in doing so they gain access to org's existing interfaces for that kind of information. For example, rather than having a single tag line that holds all of my tag-like information about an entry, I could split the tags up into meaningful classes in properties of the entry. For example, when I go to set the PEOPLE property, I would get to use org's tag selection interface rather than plain text entry. In another case, I might have multiple todo cycles that are relevant to the same entry: I could have a WRITING property that used todo semantics, and an associated todo cycle, and I could still have my general todo cycle stored in the default TODO property using its own cycle. To be a bit more concrete, I'm proposing that an entry like #v+ * NEXT Research project :advisor1:advisor2:computer:office:writing:analysis: #v- could actually be stored as something like #v+ :PROPERTIES: :TODO: NEXT :WRITING: EDIT :PEOPLE: :advisor1:advisor2: :EQUIPMENT: :computer: :LOCATION: :office:lab: :TASK_TYPE: :writing:analysis: :END: #v- Important to note are that I have multiple banks of tags and multiple todo cycles within a single entry. The display of the headline could be almost the same-- display the union of all the tags from all of properties using tag semantics, and maybe display only one todo state by default. I envision this sort of setup would being based on user configurations like: #v+ (setq org-tag-alist '((:PEOPLE:) ("advisor1" . ?a) ("advisor2" . ?b)) org-todo-keywords '((:WRITING:) ("DRAFT" "EDIT" "DISTRIBUTE" "REVISE" "|" "SUBMIT= "))) (org-declare-property "PEOPLE" 'tagged) (org-declare-property "WRITING" 'cycled) (org-declare-property "LAST_REVISED" 'timestamped) #v- With a setup like this, when I did C-c C-x C-p PEOPLE, I would get a tag selection interface that included tags only from the PEOPLE tagset. C-c C-x C-p WRITING would let me cycle through the appropriate todo states. C-c C-x C-p LAST_REVISED would give me the timestamp entry dialog. Given that there are already a set of special properties that use each of the above semantics, my proposal boils down to letting users declare their own "special" properties with those same semantics. Org is clearly a great tool already. In fact, I like its different interfaces so much that I want to be able to use them in even more ways. Do people think this generalization of existing org interfaces to arbitrary properties is an interesting idea? Would you use it? Thanks for your thoughts, /au =2D-=20 Austin Frank http://aufrank.net GPG Public Key (D7398C2F): http://aufrank.net/personal.asc --=-=-= Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (Darwin) iEYEARECAAYFAkgsvzsACgkQlHMl2/XbR4EOzwCdF3adzAMz6Oe9K4jA7gFUIu8q 1CsAoO5whVdSp16TquQDTPS8QtdZnCHH =CYyX -----END PGP SIGNATURE----- --=-=-=-- --===============0390066228== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ 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 --===============0390066228==--