hoersten-pastebin-region.el
changeset 0 c25fee3c92e9
child 1 ede059431d20
equal deleted inserted replaced
-1:000000000000 0:c25fee3c92e9
       
     1 ;; ~/.emacs.d/hoersten-pastebin-region.el - Luke Hoersten - v0.6
       
     2 
       
     3 ;; custom keys
       
     4 (global-set-key (kbd "C-c w") 'pastebin-region)
       
     5 
       
     6 ;; Based on http://www.emacswiki.org/cgi-bin/wiki/download/pastebin.el
       
     7 (defvar pastebin-type-assoc
       
     8   '((emacs-lisp-mode . "common-lisp")
       
     9 	 (c-mode          . "c")
       
    10 	 (python-mode     . "python")
       
    11 	 (nxml-mode       . "xml")
       
    12 	 (c++-mode        . "cpp")))
       
    13 
       
    14 (defun pastebin-region (start end)
       
    15   "Send selected text to dpaste pastebin."
       
    16   (interactive "r")
       
    17   (let* ((pastebin-url "http://build-ch-03/paste/")
       
    18 			(url-request-method "POST")
       
    19 			(url-request-extra-headers '(("Content-Type" . "application/x-www-form-urlencoded")))
       
    20 			(url-request-data
       
    21 			 (format "title=%s&content=%s&lexer=%s&author=%s"
       
    22 						(url-hexify-string (buffer-file-name)) ;; title
       
    23 						(url-hexify-string (buffer-substring-no-properties start end)) ;; content
       
    24 						(url-hexify-string (or (assoc-default major-mode pastebin-type-assoc) "text")) ;; lexer
       
    25 						(url-hexify-string (user-full-name))))) ;; author
       
    26 	 (url-retrieve pastebin-url (lambda (arg)
       
    27 											(cond
       
    28 											 ((equal :error (car arg))
       
    29 											  (signal (cdr arg)))
       
    30 											 ((equal :redirect (car arg))
       
    31 											  (let ((redirected (cadr arg)))
       
    32 												 (message redirected)
       
    33 												 (with-temp-buffer
       
    34 													(insert redirected)
       
    35 													(clipboard-kill-ring-save (point-min) (point-max))))))))))