hoersten-pastebin-region.el
changeset 0 c25fee3c92e9
child 1 ede059431d20
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hoersten-pastebin-region.el	Thu Jan 01 10:51:38 2009 -0600
@@ -0,0 +1,35 @@
+;; ~/.emacs.d/hoersten-pastebin-region.el - Luke Hoersten - v0.6
+
+;; 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://build-ch-03/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))))))))))