Saturday, February 03, 2007

Emacs sending to blogger, made easy

(defvar blogspot-post-username "yourname"
"The first part of the email address: `blogspot-post-username'.`blogspot-post-blog'")

(defvar blogspot-post-blog-list '("blog1" "blog2")
"List with second parts of the email address: `blogspot-post-username'.`blogspot-post-blog'")

(require 'cl)
(defun blogspot (title url &optional text)
"Opens a gnus msg buffer with the active region or the parameters passed in the body.
Configure `blogspot-post-username' and `blogspot-post-blog-list' to set it up."
(interactive "sPost title:
sPost link (tip - an empty string won't create the link): ")
(let* ((blogspot-post-blog (completing-read "Where to? " blogspot-post-blog-list nil nil (car blogspot-post-blog-list)))
(to (concat blogspot-post-username "." blogspot-post-blog ""))
(subject (cond ((and title url (not (string= url "")))
(concat "<a href= \""
(title title)
(t "")))
(body (or text "")))
(let ((gnus-posting-styles
(mapcan (lambda (x)
(list (remove-if (lambda (y) (and (listp y)
(string= (car y) "Face")))
(gnus-msg-mail to subject))
(when body
(insert body)))
(message "Edit the buffer and press \\C-c \\C-c to post it to %s." blogspot-post-blog)))

(defun blogspot-region (beg end title url)
"Call `blogspot-text' and inserts the active region as the post's body."
(interactive "r
sPost title:
sPost link: ")
(blogspot title url (buffer-substring-no-properties beg end)))

Edgar Gonçalves -

Software Engineering Group @ INESC-ID
IST/Technical University of Lisbon