Emacs: Automating the insertion of text
| emacsAs the VP Education of Toast I.T. Toastmasters in downtown Toronto, I'm responsible for assigning people roles in upcoming meetings and confirming these roles by e-mail. We currently do our scheduling in a spreadsheet. Copying and pasting the roles for the spreadsheet results in the following text:
Ari Caylakyan Anthony D'Costa Chris Charabaruk Michael Chan Chris Charabaruk Chris Charabaruk Khalid Ghaffar Natasha Guigova Ari Caylakyan - C&L 5 Anthony D'Costa Jackie Achonu Sacha Chua
Adding role descriptions to this was a bit of a pain, so I wrote a
short Emacs Lisp function that inserted descriptions if and only if
there was a corresponding person assigned to that role.
(defun sacha/toast-add-roles ()
"Add role descriptions."
(interactive)
(mapcar (lambda (item)
(goto-char (line-beginning-position))
(unless (looking-at "^[ \t]*$")
(insert item ": "))
(forward-line 1))
'("President" "Toastmaster" "Sgt at Arms" "Timekeeper" "Ah-counter"
"Grammarian" "Table-topics Master" "General Evaluator" ""
"Educational Speaker" "Guest Speaker"
"Speaker #1" "Evaluator #1"
"Speaker #2" "Evaluator #2"
"Speaker #3" "Evaluator #3")))
Next step: Personalized e-mail that highlights upcoming roles, just as
I wrote Emacs Lisp functions to make it easier to send students
personalized feedback on their programs.
That's one of the coolest things about Emacs – it's so easy to automate tasks.
You can e-mail me at sacha@sachachua.com.