Well :-) Seeing as ShaeErisson is so enthused about me creating a page on the Wiki, I woke up this morning, had some toasted english muffins with vegemite, and decided to write something in here.
I’ve been using Linux for the last 6 years or so now. I only seriously got into Emacs about 18 months ago [ed: 3 years now], having used VIM up until then for the better half of 5 years. Once I got over the initial learning curve, I was hooked, and I’ve been proselytising to friends about the virtues of the one true editor since.
Emacs is fantastic at manipulating text and text-based information. Because it is so extensible and efficient, I have slowly migrated a number of my “computing tasks” from external applications into Emacs. I tend to have the function keys reserved for tasks or “applications” - for example:
F1 - Open a "notes" buffer F8 - Load EmacsWiki F4 - Load Calendar/Diary F5 - Load Mail
I should probably space the bindings out a bit more as I sometimes accidently hit the wrong ones. There’s no real logic to where I’ve placed things so far. But let’s have a brief look at the various bindings:
I use a notes buffer to jot down any information I need to transcribe quickly. This is everything from pasting URLs to remember, to friends reading out their number, to notes pertinent to my work. I then go back later and organise this information into the relevant places (more on this in a bit). remember.el by JohnWiegley is a more sophisticated approach to the initial transcription stage, but I wasn’t able to make use of its extra features like recording the context a note was jotted down in.
I used to have all sorts of problems organising my data. I tried various little GUI applications to store “trees” of data, storing two-line notes in lots of separate files. I had a hard time keeping track of it all, and often lost information.For managing contact information, I ended up writing a perl hack - this was one of my first open source projects. It was terrible .. but we all have to learn. :-)
Then one day, I discovered EmacsWikiMode. This is very handy. It allows me to maintain a hyperlinked repository of information (multiple repositories in fact, with its project support - so I can keep a separate wiki for work related information). I store all sorts of things in my wiki. For example:
I recently took over maintainership of EmacsWikiMode from JohnWiegley, and I’ve been trying to add more time-saving functionality where I can (suggestions are always welcome!). Interactive renaming and deleting links is handy.
My memory is reasonably good. But I have a tendency of getting side-tracked and forgetting about something I should have done. This is where the diary functionality comes in handy. I have a two-tier system to remind me of upcoming events:
Gnus was one of the first Emacs “applications” I started using. Put simply, I have never encountered an email client as sophisticated, customisable and difficult to set up before. I love it. It is a very powerful email client in it’s own right, but its appeal tends to escalate as your learn the basics of lisp. I really like the way read messages are hidden by default (unless you mark them, or elect to bring them back up), and I have gnus setup to expire articles > 30 days old to backup mailboxes, so that my mail access time is very fast unless I need to search for something from the past.
Oh, and let’s not forget the X-Sent header:
You can even add a hook to make it count the seconds as you watch the mail - But I decided not to go that far.
I use an EmacsIrcClient called ERC. When I originally heard about it, I scoffed at the thought of IRCing within Emacs. Then I considered I’d said the same thing about reading mail within Emacs at one point. So I tried it out. I wrote some additions to the channel tracking code which allows one to hit a key to “jump” to the latest active channel (which others had already gotten displaying in the mode-line down the bottom), and then the same button can be pressed again to return to the work one was previously doing. Very handy for reducing the impact of IRC interruptions on your workflow.
And of course, the reason why all these applications in Emacs are so handy is because Emacs is great at editing text. Sophisticated movement / macro commands, completion of words based on words occurring elsewhere in the buffer, and a convenient lisp API should a feature not already exist. I’d been a VIM user for approximately 5 years before I started a university degree, where they used Emacs exclusively. I was tempted to just compile VIM for the solaris boxes they use, but decided it was time I learnt Emacs properly. After I got over the initial mental hurdles (“it’s big and bloated!”), which took a few weeks, I was hooked. I’d say more than 60% of my computing time these days occurs within Emacs.