Hi list!
I decided to finally get my hands dirty and build a small function to improve my org-based productivity system.
Let me explain:
I have a subdirectory under ~/org which has a bunch of files named after different subjects. Originally it was supposed to model a wiki, but in practice, I create a file there whenever I start studying a new (often complex) subject and that I know I will come back often and edit / improve. It's indeed like a wiki.
However, I don't keep those files in the agenda. It would slow it down a lot. To keep the organization as organic as possible, I simply use tags to bring them together semantically. So, I have other files with items that are tagged, say, business, and I have a "wiki file" with a headline like this:
* tags :business:
<contents>
I use the tags headline to tag those files.
Now, what I wanted was to get a list of files related to say, the business tag. It's quite useful to find myself in the (good) chaos of tagged "wiki files", I came up with a small elisp function that does just that!
(progn
(shell-command "cd ~/org; ack \"\\* tags.*(business).*\" --all" "mybuf")
(set-buffer "mybuf")
(beginning-of-buffer)
(ignore-errors
(while (search-forward-regexp "\\(.*?\\):")
(replace-match "[[~/org/\\1]]" )
))
(org-mode)
)
Bear in mind this is my first elisp program ever. It's not even a function yet, actually. But it works pretty well for what I want :)
Took me around 1 hour to bring it up.
The joy of breaking your head on something!
Cheers!
(Suggestions on how to improve it welcome!)
Marcelo.