pastebin-region.el
changeset 35 4a9c440b6764
parent 29 b52bb6669eed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pastebin-region.el	Sat May 14 14:47:51 2011 -0500
@@ -0,0 +1,43 @@
+;; ~/.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))))))))))
+
+(message "Loading pastebin-region...done")
+(provide 'pastebin-region)