hoersten-pastebin-region.el
author Luke Hoersten <Luke@Hoersten.org>
Sat, 08 Aug 2009 11:26:04 -0500
changeset 8 f16b95667aa6
parent 4 0fda818a8b6a
child 17 2067d6164e07
permissions -rw-r--r--
Added line numbers and line truncation to C++.

;; ~/.emacs.d/hoersten-pastebin-region.el
;; Luke Hoersten <[email protected]>

;; custom keys
(global-set-key (kbd "C-c w") 'pastebin-region)

;; Based on http://www.emacswiki.org/cgi-bin/wiki/download/pastebin.el
(defvar pastebin-type-assoc
  '((emacs-lisp-mode . "common-lisp")
    (c-mode          . "c")
    (python-mode     . "python")
    (nxml-mode       . "xml")
    (c++-mode        . "cpp")))

(defun pastebin-region (start end)
  "Send selected text to dpaste pastebin."
  (interactive "r")
  (let* ((pastebin-url "http://inf/paste/")
         (url-request-method "POST")
         (url-request-extra-headers '(("Content-Type" . "application/x-www-form-urlencoded")))
         (url-request-data
          (format "title=%s&content=%s&lexer=%s&author=%s"
                  (url-hexify-string (buffer-file-name))                                         ; title
                  (url-hexify-string (buffer-substring-no-properties start end))                 ; content
                  (url-hexify-string (or (assoc-default major-mode pastebin-type-assoc) "text")) ; lexer
                  (url-hexify-string (user-full-name)))))                                        ; author
    (url-retrieve pastebin-url (lambda (arg)
                                 (cond
                                  ((equal :error (car arg))
                                   (signal (cdr arg)))
                                  ((equal :redirect (car arg))
                                   (let ((redirected (cadr arg)))
                                     (message redirected)
                                     (with-temp-buffer
                                       (insert redirected)
                                       (clipboard-kill-ring-save (point-min) (point-max))))))))))

(provide 'hoersten-pastebin-region)