松尾です。 こちらではcurl(SSL)を使っていないのですが、問題なく 投稿できるようです。今井さんはcurlをお使いでしょうか。 twittering-percent-encodeで「[」や「]」が%5bや%5dにencode されないのと関係あるのかもしれません。
Emacs 22.1のurl-util.elにある、url-hexify-stringを基にした 関数で置き換えるパッチを作ってみました。 http://github.com/hayamiz/twittering-mode/tree/master に対する差分です。 twittering-mode.elのあるディレクトリで patch -p1 < replace-percent-encode.path を実行すれば適用できます。 これを適用するとエラーは収まるでしょうか。 --- 松尾 直志 <t...@mymail.twin.jp>
diff -r ce86c2bd92fe twittering-mode.el --- a/twittering-mode.el Sat Jan 02 03:55:16 2010 +0100 +++ b/twittering-mode.el Wed Jan 06 03:18:08 2010 +0900 @@ -63,6 +63,16 @@ (defconst twittering-max-number-of-tweets-on-retrieval 200 "The maximum number of `twittering-number-of-tweets-on-retrieval'.") +;;; derived from url-util.el of Emacs 22.1 +(defconst twittering-url-unreserved-chars + '(?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k ?l ?m ?n ?o ?p ?q ?r ?s ?t ?u ?v ?w ?x ?y ?z + ?A ?B ?C ?D ?E ?F ?G ?H ?I ?J ?K ?L ?M ?N ?O ?P ?Q ?R ?S ?T ?U ?V ?W ?X ?Y ?Z + ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 + ?- ?_ ?. ?! ?~ ?* ?' ?\( ?\)) + "A list of characters that are _NOT_ reserved in the URL spec. +This is taken from RFC 2396.") + + (defvar twittering-number-of-tweets-on-retrieval 20 "*The number of tweets which will be retrieved in one request. The upper limit is `twittering-max-number-of-tweets-on-retrieval'.") @@ -1209,19 +1219,35 @@ (setq statuses (cdr statuses))) ret))) -(defun twittering-percent-encode (str &optional coding-system) - (if (or (null coding-system) - (not (coding-system-p coding-system))) - (setq coding-system 'utf-8)) - (mapconcat - (lambda (c) - (cond - ((twittering-url-reserved-p c) - (char-to-string c)) - ((eq c ? ) "+") - (t (format "%%%x" c)))) - (encode-coding-string str coding-system) - "")) +;; derived from url-util.el of Emacs 22.1 +(defun twittering-url-hexify-string (string) + "Return a new string that is STRING URI-encoded. +First, STRING is converted to utf-8, if necessary. Then, for each +character in the utf-8 string, those found in `url-unreserved-chars' +are left as-is, all others are represented as a three-character +string: \"%\" followed by two lowercase hex digits." + ;; To go faster and avoid a lot of consing, we could do: + ;; + ;; (defconst url-hexify-table + ;; (let ((map (make-vector 256 nil))) + ;; (dotimes (byte 256) (aset map byte + ;; (if (memq byte url-unreserved-chars) + ;; (char-to-string byte) + ;; (format "%%%02x" byte)))) + ;; map)) + ;; + ;; (mapconcat (curry 'aref url-hexify-table) ...) + (mapconcat (lambda (byte) + (if (memq byte twittering-url-unreserved-chars) + (char-to-string byte) + (format "%%%02x" byte))) + (if (multibyte-string-p string) + (encode-coding-string string 'utf-8) + string) + "")) + +(defun twittering-percent-encode (str) + (twittering-url-hexify-string str)) (defun twittering-url-reserved-p (ch) (or (and (<= ?A ch) (<= ch ?z))
------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev
_______________________________________________ twmode-users mailing list twmode-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/twmode-users