[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] Structuring and (cross)linking information in org-mode
From: |
John Kitchin |
Subject: |
Re: [O] Structuring and (cross)linking information in org-mode |
Date: |
Wed, 08 Jul 2015 10:32:53 -0400 |
Daniel Hertrich writes:
> Dear John,
>
> also to you, many thanks for your time to answer so many questions of mine.
> I’ll comment them below:
>
>
>> Am 03.07.2015 um 16:02 schrieb John Kitchin <address@hidden>:
>>
>> This all sounds doable, but it will take some work ;)
>>
>
> I guessed so. ;-) But that’s the trade-off. Take some ready-made software
> that works out of the box, but then it won’t work as you want it to work. The
> other extreme is to program a personalized solution entirely on your own. I
> have done this before. But I hope Emacs is something in-between. The
> framework is there, and it’s only a matter of writing some scripts to make it
> work exaclty as I wish.
> The problem is also, that I don’t know exactly in advance how I’d like
> it to work. These wishes will evolve with time. Another advantage of
> scripting an existend application. I can adapt it easier to new
> requirements than re-writing an entire application. ;-)
I think Emacs+org-mode is somewhere in the middle there.
>
>
>>> I know how to make tasks with the org-todo-keywords.
>>> Now I want to mark chunks of information in that file in a similar
>>> way, but keep it outside of the task workflow. I’d like to have that
>>> information accessible and finable easily, and I want to
>>> differentiate different kinds of information.
You might look at inlinetasks. C-c C-x t
you can put headline like items in a headline that doesn't change the
headline level.
>>>
>>> Quick example:
>>>
>>> * TODO This is my first task
>>> Some task description goes here
>>>
>>> * MEETINGNOTE of meeting 2015-07-02 MyCompany
>>
>> I think you should probably use a tag of :MEETINGNOTE: here, instead of
>> a TODO keyword like this. TODO keywords imply to me some kind of
>> changeable state not a type of content. Alteratively you could make it a
>> property.
>>
>> with your curson on the headline, type C-c C-c and enter MEETINGNOTE to
>> add the tag.
>
> I have to press „TAB“ („free“) before entering a new tag. Might be
> because I already defined some tags to be used in quick access.
> You are right, somehow a tag is more suuitable for this kind of marking
> information.
> However, I just came across the possiblitiy of defining several TODO keyword
> workflows in parallel. I could imagine to have one for my own todos (TODO),
> one for other people’s todos that I’m monitoring (TASK) and maybe also one
> for information that expires or becomes outdated. Like this, partially taken
> from the org-secretary explanation, but adapted by me:
>
> (setq org-todo-keywords
> '((sequence "TODO(t)" "|" "DONE(d)" "CANCELLED(c)")
> (sequence "TASK(f)" "|" "DONE(d)")
> (sequence „INFO(i)" "|“ „INFO-EXPIRED(e)")))
This is certainly reasonable. I use this for various states of
proposals and manuscripts. For example, just in a file called
manuscripts.org, I have this at the top:
#+TODO: TODO PREPARATION | SUBMITTED REVISING | ACCEPTED DONE REJECTED
and in proposals.org:
#+TODO: TODO PENDING | DONE DECLINED AWARDED EXPIRED
In my mind TODO keywords should represent states of a headline, not
categories (which I use tags for). Although states can also be used as a
category, e.g. all PENDING proposals.
I think the INFO/INFO-EXPIRED should be tags though (just my
opinion). What headline is not information? and when it is expired, it
should be archived.
>
> Or would you consider this total nonsense? I know there is the
> archiving feature. Maybe expired info should be archived instead of
> maker „expired“? ;-)
The point of archiving in org-mode is to keep the information out of the
agenda. You can use a tag ARCHIVE (C-c C-x a) for this if you want to
keep the headline in the file, or setup archiving to move the headline
to a new file with C-c C-x C-a.
>
> This brings me to another idea: Maybe you know the outliner „NoteCase
> Pro“ (www.notecasepro.com <http://www.notecasepro.com/>). I have
> written some plugins for it (www.notecaseproplugins.com
> <http://www.notecaseproplugins.com/>), one of them being a plugin for
> helping to keep your files clean. One way to keep them clean is to
> assign an expiry date to every chunk of information in the file. If
> you generate an entry, you are automatically asked to quickly choose a
> validity time span (only a rough one, so you don't need to think too
> much at this point: one day, one week, one month, one year, 5 years,
> forever). Based on your selection, the plugin sets the corresponding
> date in the ffuture as expiry date for this piece of
> information. Everytime you open your file, the plugin searches for
> expired info and present only one expired info per session (so you are
> not overwhelemed by having to make decisions) to you and lets you
> choose to archive it, prolong the validity time span or to delete the
> expiry date entirely.
You could pretty easily "expire" headlines based on a date. see
http://orgmode.org/w/?p=org-mode.git;a=blob_plain;f=contrib/lisp/org-expiry.el;hb=HEAD
> I think in times of gigantic flood of information we need such mechanisms to
> be able to maintain our information.
>
> Does something like this exist for Emacs, too? Or is it already easily
> possible by using dates and the agenda…?
I bet you can filter the agenda to not show content older than some date.
>
>
>>
>>> ** participants
>>> *** —> John Doe
>>> *** —> Mary Sample
>>> ** Goal
>>> This is the description of meeting goal
>>> ** Outcome
>>> Outcome of the meeting
>>>
>>>
>>> * PERSON John Doe
>>> Street address
>>> email address
>>> telephone
>>>
>> PERSON should also be a tag, or look at org-contacts, where those bits
>> in the body would be stored as properties.
>
> org-contacts seems to have a similar use case as BBDB (big brother
> data base). What is better? :-D I know, this is a very sloppy
> question.
I use org-contacts. I looked at bbdb for a while, but it did not stick
with me. The cumulative advantage of contacts in org syntax won out. I
also thought bbdb was underdocumented.
> New attempt: Which one would you recommend? I’d like to have a
> full-fledged contacts database that i’d like to sync with CardDAV
> servers and possibly iCloud, so that ai can use the same address data
> in any email client / telephone assistance solution on the Mac, and
> also inside Emacs for referring to todos etc., maybe to write letters
> inside Emacs with LaTex export and automatic inclusion of the snail
> mail address of the person etc. etc. All on a Mac. (Currently using
> Aquamacs, but maybe switching to Emacs Mac Port later, as that seems
> to be more standard, more stable and also less performance-hungry).
You will be writing a lot of code to do all that ;) org-contacts can be
made to do a lot of those things. my helm contacts can insert email
addresses, open urls, could send tweets, etc... depending on what
information is available in a contact.
I use emacs on Mac built from homebrew.
>>>
>>> - I’d like to have all the info (cross)linked, so that if I click
>>> e.g. on any occurrence of „John Doe“ I’d like to see a list of matches
>>> that mention John Doe: his PERSON entry, the notes of meetings he
>>> participated, the company he is an employee of etc. How can I mark up
>>> info in a way that Emacs or org links such info? Or isn’t this
>>> possible? Do I have to use Gnowsys or something like that for this?
>>
>> This is not totally possible, org-mode does not know how to make "John
>> Doe" clickable unless you make a special link. but see:
>> http://kitchingroup.cheme.cmu.edu/blog/2015/06/22/Clickable-org-contacts-in-text-files/
>>
>> <http://kitchingroup.cheme.cmu.edu/blog/2015/06/22/Clickable-org-contacts-in-text-files/>
>
> Ah, interesting! Not exactly what I had in mind, but this inspires me to
> think about a good solution for what I actually want.
> Somehow it’s probably possible to make clickable links that call lisp code,
> which does not, as in the above example, searches the org-contacts, but
> instead triggers the agenda with a search for that person’s name, so that as
> a result I have an agenda / match view of all occurrences of that name in my
> file(s)?
You can call any emacs-lisp code you want, even a menu of options to do
a variety of different things. My current code gives me a hydra menu to
open the contact, email the contact or open their homepage if there is
one in the contact. It would be easy to extend it to direct message them
on twitter if there is a twitter handle, probably call them on skype
with a skype handle (reaching here, assuming skype can be automated by
applescript or some other command line incantation), or use some kind of
telephony from a phonenumber. The menu is even conditional, and changes
with available contact info. You could do that for a bbdb entry too.
>>> - I’d like to be able to search all „PERSON“ entries for a specific
>>> name.
>> See org-contacts. i integrated something like this into helm:
>> http://kitchingroup.cheme.cmu.edu/blog/2015/03/14/A-helm-mu4e-contact-selector/
>> which I use all the time.
>
> Oh yes, email is also something which I’d maybe like to integrate into Emacs
> later.
> Thanks for the pointer. mu4e looks promising. I’d be interested in a
> comparison chart of email clients that work with / inside
> Emacs. However, I haven’t found any yet. Do you know something like
> this?
Not really. Some people use gnus. that also did not stick with me. mu4e
+ offlineimap + gmail is pretty sweet, and easy to install with homebrew
on mac.
>
>
>>
>>>
>>> - I’d like to be able to archive chunks of information, e.g. a
>>> MEETINGNOTE that’s obsolete, equally as I can do it with tasks
>>
>> C-c C-x a will archive a headline. you can only archive headlines, not
>> pieces of text.
This might be C-c C-x C-a. The keys above add an archive tag to the headline.
>
> Good enough I guess. Great! :-)
>
>
>
>>
>>>
>>> - I’d like to filter, i.e. have Emacs only show me e.g. the
>>> „MEETINGNOTES“ entries with all their text, but filter out everything
>>> else. Maybe even only „MEETINGNOTES“ with tag „XY“… combined
>>> filtering. Possible via Agenda, as I understand it, at least
>>> partially. Matching tags and combinations of tags etc.
>>
>> This sounds pretty doable with tag/property searches.
>
> Great!
>
> Slowly my image of what my setup might look like gets clearer and clearer.
>
> Thanks!
> Daniel
--
Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
@johnkitchin
http://kitchingroup.cheme.cmu.edu