twittering-mode over proxy

ちょこっといじってみた。今のところ機能しているような気がする。

--- d:/home/.emacs.d/elisp/twittering-mode.el.orig	2008-01-08 15:50:30.275576000 +0900
+++ d:/home/.emacs.d/elisp/twittering-mode.el	2008-01-10 21:06:34.020910400 +0900
@@ -82,6 +82,19 @@
 (defvar twittering-username-face 'twittering-username-face)
 (defvar twittering-uri-face 'twittering-uri-face)
 
+(defvar twittering-proxy-use nil)
+(defvar twittering-proxy-server nil)
+(defvar twittering-proxy-port 8080)
+
+(defun twittering-toggle-proxy () ""
+  (interactive)
+  (setq twittering-proxy-use
+        (not twittering-proxy-use))
+  (message "%s %s"
+           "Use Proxy:"
+           (if twittering-proxy-use
+               "on" "off")))
+
 (defun twittering-get-or-generate-buffer (buffer)
   (if (bufferp buffer)
       (if (buffer-live-p buffer)
@@ -186,6 +199,7 @@
       (define-key km [backspace] 'backward-char)
       (define-key km "G" 'end-of-buffer)
       (define-key km "H" 'beginning-of-buffer)
+      (define-key km "\C-c\C-p" 'twittering-toggle-proxy)
       nil))
 
 (defvar twittering-mode-syntax-table nil "")
@@ -259,18 +273,23 @@
     (set-buffer (twittering-http-buffer))
     (erase-buffer))
 
-  (let (proc)
+  (let (proc server port)
     (condition-case nil
 	(progn
+          (if (and twittering-proxy-use twittering-proxy-server) 
+              (setq server twittering-proxy-server
+                    port twittering-proxy-port)
+            (setq server "twitter.com"
+                  port "80"))
 	  (setq proc
 		(open-network-stream
 		 "network-connection-process" (twittering-http-buffer)
-		 "twitter.com" 80))
+		 server (string-to-number port)))
 	  (set-process-sentinel proc sentinel)
 	  (process-send-string
 	   proc
 	   (let ((nl "\r\n"))
-	     (concat "GET /" method-class "/" method ".xml HTTP/1.1" nl
+	     (concat "GET http://twitter.com/" method-class "/" method ".xml HTTP/1.1" nl
 		     "Host: twitter.com" nl
 		     "Authorization: Basic "
 		     (base64-encode-string
@@ -448,17 +467,22 @@
     (set-buffer (twittering-http-buffer))
     (erase-buffer))
 
-  (let (proc)
+  (let (proc server port)
     (progn
+          (if (and twittering-proxy-use twittering-proxy-server)
+              (setq server twittering-proxy-server
+                    port twittering-proxy-port)
+            (setq server "twitter.com"
+                  port "80"))
       (setq proc
 	    (open-network-stream
 	     "network-connection-process" (twittering-http-buffer)
-	     "twitter.com" 80))
+             server (string-to-number port)))
       (set-process-sentinel proc sentinel)
       (process-send-string
        proc
        (let ((nl "\r\n"))
-	 (concat "POST /" method-class "/" method ".xml?"
+	 (concat "POST http://twitter.com/" method-class "/" method ".xml?"
 		 (if parameters
 		     (mapconcat
 		      (lambda (param-pair)

2008-01-10追記

切替が面倒だったので、ON/OFF トグルできるようにして、ついでにキーマップも追加した。

2008-03-17追記

本家にとりこまれたみたい。手パッチ不要になったよひゃっほう。