
 NEWS -- twittering-modeのあゆみ
=================================

 HEAD: XXXX-XX-XX
------------------

### 重要なお知らせ

### 改良

### バグ修正

 3.0.0: 2013-04-21
------------------

### 重要なお知らせ
* 暗黙に署名を付加する機能の廃止
  関数`twittering-sign-string-function'と変数
  `twittering-sign-simple-string'の機能は廃止されました。同様の機能は
  `edit skeleton'で設定できますので、こちらを使ってください。
  例えば以前までの設定
  (setq twittering-sign-simple-string "footer")
  は、以下の設定で置き換えられます。
  (setq twittering-edit-skeleton-footer " [footer]")
  (setq twittering-edit-skeleton 'footer)
* 変数`twittering-scroll-mode'の廃止
  変数`twittering-scroll-mode'は廃止されました。現在の版は、過去の版で
  scroll-modeが有効であったときのように振舞います。最新のtweetに追従す
  るには、timelineバッファの最新側のヘッダもしくはフッタ上にカーソルを
  置いてください。
* "C-cD"の代替として"C-cC-w"を導入
  これまで、"C-cD"がtweet削除用関数'twittering-delete-status'にbindさ
  れていました。しかしこのキーはEmacsのKey Binding Conventionsに則って
  いません。そこでその代替として"C-cC-w"を同関数にbindしました。"C-cD"
  も有効ですが、"C-cC-w"の使用を推奨します。

### 改良
* 現在のtimelineに応じたedit skeleton
  現在のtimelineに応じたedit skeletonを定義できるようになりました。
  詳しくは変数`twittering-edit-skeleton-alist'のdocstringを参照くださ
  い。
  また、定義済みedit skeleton `inherit-hashtags'と`inherit-any'は現在
  のtimelineがハッシュタグを含むようなsearch timelineである場合に、そ
  のハッシュタグを自動で追加するよう変更されています。
* 超過文字列の強調表示無効化
  通常、`twittering-edit-mode'では140字を超える部分にoverlay
  `twittering-warning-overlay'を付加して強調表示するようになっています。
  しかし環境によってはinput methodとこのoverlayの更新とが干渉して問題
  を起こす場合があるようです。そのような場合、下記の設定でoverlayの付
  加を無効化すれば問題を回避できる可能性があります。
  (setq twittering-disable-overlay-on-too-long-string t)
* tweet中のURI文字列へのジャンプ
  tweet中のURI文字列へジャンプするコマンド`twittering-goto-next-uri'、
  `twittering-goto-previous-uri'が追加されました。
  また、旧来のコマンド`twittering-goto-next-thing'と
  `twittering-goto-previous-thing'にC-uでprefix argumentを与えると
  tweet中のURI文字列だけを対象としてジャンプするようになりました。
* CA証明書を追加
  新たにRoot CA証明書`VeriSign Class 3 Public Primary CA - G2'と
  `GeoTrust Global CA'を内蔵しました。これらの証明書はそれぞれ、
  `api.twitter.com'と`search.twitter.com'のサーバ認証で参照されます。
  以前から内蔵されている証明書`Equifax Secure Certificate Authority'は
  URI短縮に用いる`www.googleapis.com'のサーバ認証でのみ参照されるよう
  になりました。
* 新たな短縮URL生成サービスに対応
  新たに`migre.me'に対応しました。下記のような設定で有効にできます。
  (setq twittering-tinyurl-service 'migre.me) ;; for mig.re
* 指定したユーザ関連のretweetを集めたtimelineに対応
  新しく":retweeted_by_user/USER", ":retweeted_to_user/USER"の2種類の
  timelineに対応しました。前者は指定したユーザUSERが投稿したretweetを
  集めたtimelineで、後者は指定したユーザのhome timelineに届くretweetを
  集めたtimelineです。
  `twittering-visit-timeline'(デフォルトでは"V"にbindされています)で指
  定する際には":retweeted_by_user/"もしくは":retweeted_to_user/"と入力
  してEnterを入力すると、続けて補完機能付きでユーザ名を入力できます。
* 文字数カウント時にt.coでの短縮を考慮
  tweetを編集する際に、t.coでのURI変換を考慮した文字数を表示するように
  なりました。変換後の文字数はhelp/configuration APIを通じて定期的に更
  新されます。デフォルトの更新間隔は1日ですが、変数
  `twittering-service-configuration-update-interval'で変更することもで
  きます。
* 非ASCII文字を含むハッシュタグへの簡易的な対応
  非ASCII文字を含むハッシュタグについても、強調表示されるようになり、
  `v'でそのtimelineを開くことができるようになりました。ハッシュタグの
  検出基準がTwitterのweb UIのそれとは多少異なる点に注意してください。
  今のところ大きな問題は見つかっていませんが、場合によっては
  twittering-mode上でハッシュタグと見なされる文字列がTwitterのweb UIで
  はハッシュタグとは見なされない恐れはあります。
* t.coで短縮されたリンクを短縮前のURLで表示
  Twitter公式のt.coサービスで短縮されたリンクが短縮前のURLとして描画さ
  れるようになりました。但し`json.el'が利用不可の場合はsearch timeline
  上ではt.coで生成されたURLがそのまま描画されます。また、リンク上で
  `twittering-enter'(デフォルトでは`C-m')を実行した場合は短縮URL経由で
  開かれます
* mentionのみからなるtweetの投稿
  ポップアップバッファからであれば、mentionのみからなるtweetも投稿でき
  るようになりました。
* `revive.el'によるtimelineバッファの復元
  HIROSE Yuujiさん作のEmacs LISPプログラム`revive.el'でtimelineバッファ
  を復元できるようになりました。設定方法には下記の2通りがあります。
  1. 手動登録
    (add-to-list 'revive:major-mode-command-alist-private
                 '(twittering-mode . twittering-revive:twittering))
    (add-to-list 'revive:save-variables-local-private
                 '(twittering-mode twittering-timeline-spec-string))
    (require 'revive)
  2. 関数を使っての自動登録 (revive.el 2.19用)
    (require 'revive)
    (twittering-setup-revive)
  上記設定で、手動登録の`(add-to-list ...)'の部分は`revive.el'をloadす
  る前に評価する必要がある点に注意してください。また逆に自動登録の場合
  は`revive.el'をloadした後で`(twittering-setup-revive)'を評価する必要
  があります。
  また、同じくHIROSE Yuujiさん作のEmacs LISPプログラム`windows.el'は
  `revive.el'を暗黙にloadしますので、`windows.el'をloadするタイミング
  にも注意してください。
* `twittering-retweet-format'用の新しい書式指定子"%u"
  `twittering-retweet-format'で指定できる書式指定子として"%u"が追加さ
  れました。これは引用されるtweetを指すURLと置き換えられます。
* skeletonによる非公式ReTweetの初期文字列設定
  非公式ReTweetを編集する際の初期文字列を指定する変数
  `twittering-retweet-format'にskeletonを指定できるようになりました。
  文字列に加えて編集開始時のカーソル位置も指定できます。skeletonに含ま
  れる文字列を下記の対応表によって変換してから、関数`skeleton-insert'
  で挿入します。
  対応表は以下の通りです。
    %s - 引用されるtweetの投稿者のscreen-name
    %t - 引用されるtweetの内容
    %u - 引用されるtweetを指すURL
    %# - 引用されるtweetのID
    %% - %自身
  この表は`twittering-retweet-format'に適用される規則と同じです。
  この変数`twittering-retweet-format'による初期文字列の挿入後に変数
  `twittering-edit-skeleton'で指定されたedit skeletonが適用される点に
  注意してください。
* edit skeleton用に非公式ReTweetを示すシンボルを追加
  edit skeletonにおける編集中tweetの種別を表現するシンボルに
  `organic-retweet'が追加されました。非公式ReTweetにのみ適用されるedit
  skeletonを定義できます。但し、現在の実装ではedit skeleton側から非公
  式ReTweetされようとしているtweetの内容を参照することはできません。
* 非ASCII文字を含むリスト名に対応
* search timeline上での返信先tweetの表示
  `json.el'が使用可能な場合には、search timelineにおいても返信先tweet
  のIDが取得できるようになりました。`json.el'が使用可能であれば関数
  `twittering-toggle-show-replied-statuses'(デフォルトでは"r"にbindさ
  れています)を呼び出すことで返信先tweetを表示できます。
* ヘッダとフッタの表示
  timelineバッファにヘッダとフッタが表示されるようになりました。これら
  はtweetとは独立の特別な行として描画されます。ヘッダやフッタ上でEnter
  キーを押す(もしくは`twittering-enter'を実行する)と、それがtimelineの
  時系列で最新の側か過去の側かに応じてtweetを取得して描画します。
  また、ヘッダとフッタの内の最新側にカーソルを置いておくと、常にカーソ
  ル行の近くに最新tweetを描画するようにできます。
  ヘッダ、フッタとして表示される文字列は、`twittering-timeline-header'、
  `twittering-timeline-footer'という変数で変更できます。また、表示する
  際のfaceは`twittering-timeline-header-face'と
  `twittering-timeline-footer-face'で変更できます。
* exclude-if timelineに対応
  新しく":exclude-if/FUNC/SPEC"というtimelineに対応しました。この
  timelineはSPECで表されるものとほぼ同じですが、関数FUNCがnon-nilを返
  すようなtweetは除外されている点が異なります。FUNCはひとつのtweetに対
  応した連想リストをひとつ受け取る関数でなければなりません。FUNCとして
  はλ式もしくは関数に対応するシンボルが指定できます。但しシンボルで指
  定する場合、名前に"("や"/"を含むものは指定できません。SPECには任意の
  timeline specを指定できます。例えば、home timelineから"WORD"を含む
  tweetを除外したtimelineは下記のtimeline specで指定できます。
  ":exclude-if/(lambda (tweet) (string-match \"WORD\" (cdr (assq 'text
  tweet))))/:home"
* merge timelineに対応
  新しく"(SPEC1+SPEC2)"や"(SPEC1+SPEC2+SPEC3)"といった形式のtimelineに
  対応しました。merge timelineは指定したtimelineのtweetを全て含む
  timelineです。任意のtimeline specを構成要素にできます。例えば、
  "(:direct_messages+:direct_messages_sent)"というtimeline specを使え
  ばこれまでに送ったり受け取ったりしたdirect messageの全てをひとつのバッ
  ファに表示できます。
* tweet描画時に実行される新しいhookの追加
  新しいhook変数`twittering-new-tweets-rendered-hook'を追加しました。
  このhookは実際に新しいtweetを描画したときに実行されます。以前に取得
  したtweetを再描画する際には実行されません。既存のhook変数
  `twittering-new-tweets-hook'はtweetの取得に成功するたびに実行される
  ので、exclude-if timelineやmerge timelineのような複合timelineに含ま
  れる実際には描画されないtweetについてもhookを実行します。新しいhook
  は複合timelineについてもうまく動作します。
  hook内では、`twittering-rendered-new-tweets'という変数で描画された
  tweetのリストを参照できます。他にも描画されたtimelineを表すtimeline
  specとtimeline spec文字列を`twittering-rendered-new-tweets-spec'と
  `twittering-rendered-new-tweets-spec-string'という変数で参照できます。
  詳細は`twittering-new-tweets-rendered-hook'のdocstringを参照してくだ
  さい。
* 大域変数初期化時に実行される新しいhookの追加
  新しいhook変数`twittering-mode-init-hook'を追加しました。このhookは
  大域変数を初期化した後に実行されます。twittering-mode用のbufferを作
  成するたびに実行される`twittering-mode-hook'とは異なり、新しいhookは
  一度しか実行されません。
* 編集バッファ上でのtweet種別の表示
  編集中のtweetについての情報が編集バッファの先頭に表示されるようにな
  りました。編集中のtweetがreplyなのか、direct messageなのか、あるいは
  通常のtweetなのかが確認できます。reply先のtweet内容のコピーもできま
  す。
* 編集中のtweetをreplyとして送るかどうかの切り替え
  編集中のtweetをreplyとして送るかどうかを編集バッファ上で切り替えられ
  るようになりました。関数`twittering-edit-toggle-reply'(デフォルトでは
  "C-c C-r"にbindされています)を呼ぶたびにreplyとして送るかどうかが切
  り替わります。
* exclude-re timelineに対応
  新しく":exclude-re/REGEXP/SPEC"というtimelineに対応しました。この
  timelineはSPECで表されるものとほぼ同じですが、正規表現REGEXPにマッチ
  するようなtweetは除外されている点が異なります。REGEXP内で / を指定す
  る際は \ でエスケープする必要があります。例えば、Emacsの文字列リテラ
  ル":exclude-re/\\//:home"で表されるtimelineでは、 / を含むtweetが除
  外されています。
* replyの系列の逐次取得
  新しい関数`twittering-toggle-or-retrieve-replied-statuses'(デフォル
  トでは"R"にbindされています)を使って、replyを遡って取得できるように
  なりました。この関数の動作は下記の通りです。
  - カーソルがreply、もしくは展開表示されたreply先のいずれかを指してい
    て、そのreplyの系列の一部がまだ表示されていない場合、そのreply系列
    を可能な限り表示します。reply系列内のいくつかのtweetが未取得の場合
    には、その内の最新のものを取得し、表示します。
  - カーソルがreply、もしくは展開表示されたreply先のいずれかを指してい
    て、そのreplyの系列が全て展開表示されている場合、展開表示をとりや
    めます。
  - カーソルがreply系列内のtweetを指していない場合、何もしません。
* 編集バッファ用を開く方法の設定
  新たに変数`twittering-pop-to-buffer-function'を追加しました。この変
  数は編集バッファを開く方法を指定するものです。デフォルトの値は関数
  `twittering-pop-to-buffer-in-bottom-largest-window'となっています。
  この関数は現在のフレーム内で最下段にあるウィンドウの内、面積最大のも
  のを分割することで編集バッファ用のウィンドウを確保します。他にも、関
  数`twittering-pop-to-buffer-in-current-window'を指定することもできま
  す。この関数は現在のウィンドウを分割してウィンドウを確保します。
* single tweet timelineに対応
  新しく":single/ID"というtimelineに対応しました。このtimelineはIDで
  指定されたtweetのみからなるtimelineです。非常に古いtweet等にアクセス
  するのに利用できます。
* tweetに含まれるURLからのsingle tweet timeline取得
  特定のtweetを指すURL上で関数`twittering-other-user-timeline'を呼ぶこ
  とで、そのtweetに対応したsingle tweet timelineを開けるようになりまし
  た。この関数はデフォルトでは"v"にbindされています。
* 特定日時以前のtweetを取得するコマンドを追加
  現在のtimelineの、指定した日時以前のtweetを取得できる新しいコマンド
  `twittering-get-tweets-before'が追加されました。
* favorites timelineで過去のtweetの遡って取得する機能を追加
* timelineごとに異なる取得間隔
  新しい変数`twittering-relative-retrieval-interval-alist'で、timeline
  ごとに取得間隔を変更できるようになりました。この変数は正規表現と相対
  間隔からなる連想リストです。この正規表現にマッチするtimelineは、
  `twittering-timer-interval'を「相対間隔」倍した間隔で更新されるよう
  になります。
* Twitter REST API v1.1に対応
  変数`twittering-service-method'の値を`twitter-api-v1.1'に変更しまし
  た。この設定でtwittering-modeはTwitter REST API v1.1を使うようになり
  ます。この場合、SSL接続とJSON解析器が必要です。SSL接続にはcURL with
  OpenSSL, GNU Wget with OpenSSL, OpenSSLとGnuTLSのいずれかが必要で、
  さらにJSON解析器として`json.el'が必要となる点に注意してください。
  Emacs22とそれ以前のEmacsでは`json.el'が同梱されていませんので別途用
  意する必要があります。
  また、Twitter REST API v1.1ではいくつかのtimelineが廃止されています。
  廃止されたtimelineに対応するtimeline spec文字列は":friends",
  ":replies", ":public", ":retweeted_by_me", ":retweeted_to_me",
  ":retweeted_by_user/USER", ":retweeted_to_user/USER"です。

### バグ修正
* 認証成功・失敗についてのメッセージが表示されるよう修正
* 利用可能な通信方法(connection method)の確認処理の修正
* HMAC-SHA1の計算を修正
  以前の`twittering-hmac-sha1'は現在のcoding-systemによっては間違った
  結果を返す場合がありました。この問題を修正しました。
* 数字からなるユーザ名(screen_name)とユーザIDの混同を一部修正
  他ユーザのtimelineを取得する際、数字のみからなるユーザ名を指定すると
  ユーザIDと混同してしまう問題を修正しました。他ユーザの「お気に入り」
  (favorites)を取得する場合にも同様の問題が起こりますが、こちらは修正
  できていません。「お気に入り」を取得するAPIにユーザIDではなくユーザ
  名を指定するパラメータがないためです。
  Thanks to Makoto Fujiwara who reported this problem.
* tweet編集バッファを開いた際の意図しないカーソル移動を解消
  `twittering-mode'で管理されていないバッファから
  `twittering-update-status-function'を呼び出して編集バッファを作ると
  元のバッファでのカーソルが不必要に動かされてしまうバグを解消しました。
  Thanks to mofigan who reported this problem.
* アイコン保存処理を修正
  `twittering-icon-storage-limit'もしくは`twittering-convert-fix-size'
  がnilの場合に、アイコンが正しく保存できていなかったのを修正しました。
  Thanks to HufflepuffBR who reported this problem about the former
  variable `twittering-icon-storage-limit'.
* byte-compile時、`load-path'に無条件でパスが追加される問題を解消
  twittering-modeのrepositoryに含まれているディレクトリ`emacs21',
  `url-emacs21'がbyte-compile時に無条件で`load-path'に加えられており、
  byte-compile時にいくつかのマクロがEmacs21用の古い定義として取り込ま
  れていました。古い定義は22以降のEmacs上で使うことができませんので
  byte-compileによって正しく動作しないファイルが生成される状態になって
  いました。そこでbyte-compile時にもEmacs 22以降ではパスが追加されない
  よう変更して、この問題を解消しました。
  Thanks to HKey who has discovered the bug.
* カーソル移動がおかしくなる問題を解消
  tweetに割り当てたtext propertyが干渉して、twittering-modeのbuffer内
  での論理行単位のカーソル移動がおかしくなっていました。この問題を解消
  しました。
  Thanks to lemit who reported the problem.
* bufferからtweetを消すのをtweet削除APIが成功した後に変更
  bufferからtweetを消去するタイミングを`destroy-status' APIが成功した
  という応答を受け取った後に変更しました。APIが失敗に終わった場合、
  対象tweetはbufferに残っているので再度削除を試みることができます。
* search timeline spec内の検索文字列のエスケープを修正
* 非同期実行される関数がエラーを起こしていたのを修正
  存在しないユーザのtimelineを取得しようとすると非同期実行される関数が
  エラーを起こしてしまっていましたので、修正しました。

 2.0.0: 2011-04-22
------------------

### 重要なお知らせ

### 改良

* OAuth, xAuthで取得した認証済みaccess tokenの暗号化保存に対応
  認証済みaccess tokenをGnuPGで暗号化して保存することができます。
  tokenを保存しておけば、次回以降の起動時にOAuthのための外部
  ブラウザ起動やPIN入力等の手続きは必要なくなります。代わりに暗号化を
  解くためのpassphraseを入力してください。
  この機能は"(setq twittering-use-master-password t)"とすれば有効に
  なります(デフォルトでは無効です)。
  暗号化された秘密情報はデフォルトでは`~/.twittering-mode.gpg'に記録
  されますがこの保存先は変数`twittering-private-info-file'で変更可能
  です。
  この機能を有効にするには外部プログラムGnuPGに加えてEmacs LISPプロ
  グラム`alpaca.el'かEasyPGが必要です。Emacsは23以降であればEasyPGを
  同梱していますので追加のEmacs LISPプログラムは必要ありません。
  `alpaca.el'はversion 0.13を想定していますので、他のversionでは動作に
  問題がある恐れがあります。
* xAuthのサポート
  OAuth認証の他にxAuthによる認証にも対応しました。xAuthによる認証を
  有効にするには"(setq twittering-auth-method 'xauth)"の設定を追加して
  ください。
* PINコード入力時に不必要な空白を自動で削除
* 起動した外部プロセスのstatusを確認してdead-lockを回避
* `user', `friends', `mentions', `public'でもnative retweetを表示
* 起動した外部プロセスの異常終了を検出
  異常終了したプロセスのexit-statusは"*Messages*"バッファで確認できます。
* HTTPS通信でのサーバ認証の無効化に対応
  サーバ認証はデフォルトでは有効ですが、これを無効化することもできる
  ようになりました。"(setq twittering-allow-insecure-server-cert t)"の
  設定でHTTPS通信時にもサーバ認証を行わなくなります。
* 未知の数値文字参照を代替文字で置換
  decodeできない数値文字参照が現れたときにその文字を変数
  `twittering-unicode-replacement-char'で指定された文字に置換して表示
  します。代替文字のデフォルトはU+FFFDです。
* サブディレクトリに`.nosearch'を追加
  必要のないサブディレクトリが再帰的に`load-path'に追加されるのを防ぎ
  ます。
* 初期timelineを複数設定している場合の認証情報入力回数を1回に変更
* byte-compile後のclライブラリへの依存を解消
* 内蔵しているCA証明書を更新
  内蔵しているCA証明書を`Equifax Secure Certificate Authority'で置き
  換えました。
* StatusNetモードをサポート
  `twittering-mode.el'をStatusNet用に切り替えられるようになりました。
  "(setq twittering-service-method 'statusnet)"という設定で切り替わ
  ります。TwitterとStatusNetを同時に使うことはできませんので注意して
  ください。
  StatusNet向けに使うにはホスト情報の設定も必要になります。
  `http://identi.ca/'でのサービスの場合、以下のような設定が必要です。
  (setq twittering-service-method 'statusnet)
  (setq twittering-auth-method 'basic)
  (setq twittering-username "YOUR-ACCOUNT-NAME")
  ;; host
  (setq twittering-api-host "identi.ca")
  (setq twittering-api-search-host "identi.ca")
  (setq twittering-web-host "identi.ca")
  ;; paths for API
  (setq twittering-api-prefix "api/")
  (setq twittering-search-api-method "api/search")
  (setq twittering-web-path-prefix "")
* "U"でtweet中のURIやそのtweet自体へのURIをコピー
  Thanks to Faried Nawaz.
* "C-<mouse-3>"でtweetをコピー
  Thanks to Faried Nawaz.
* wgetによるtweet取得に対応
  Twitterサーバとの通信に外部プログラムwgetを使えるようになりました。
  下記の設定でwgetが優先して使われるようになります。
  (setq twittering-connection-type-order '(wget curl native))
* 現在の通信方法(connection method)をモードライン上に表示
  デフォルトで現在の通信方法(connection method)がモードライン上に表示
  されます。下記の設定で表示しないようにもできます。
  (setq twittering-display-connection-method nil)
* アイコン取得時の情報表示をデフォルトで抑制
  `twittering-url-show-status'のデフォルト値がnilに変更されました。
  デフォルトではアイコン取得時の情報は表示されなくなります。
* urlライブラリによるtweet取得に対応
  通信方法(connection method)として`urllib-http'と`urllib-https'を追加
  しました。`native'とは異なりHTTP redirectionもサポートしていますが
  動作は遅く、また不安定になる場合もあるようです。他のmethodが利用できる
  場合にはそちらを用いることを推奨します。
  `urllib-http',`urllib-https'を用いてのBASIC認証,xAuthで間違ったアカウ
  ント情報を与えるとurlライブラリの機能で再入力を求められますが、再入力
  した情報で通信を続行することはできません。再入力を求められたときはC-g
  でキャンセルし、改めてM-x twitを実行してください。
* ユーザからの入力待ち状態になってから再描画
  時刻やアイコン画像の表示のためのtweetの再描画を、Emacsがユーザからの
  入力待ち状態(idle状態)に入り、その状態が一定時間継続してから行うように
  しました。待ち時間は変数`twittering-timer-interval-for-redisplaying'で
  指定できます。デフォルトの待ち時間は1秒です。
* curlやwgetでのアイコン画像取得に対応
  アイコン画像の取得にtweet取得と同じ通信方法(connection method)が使える
  ようになりました。各methodの優先順位はtweet取得と同じく変数
  `twittering-connection-type-order'で決定されます。
* アイコン画像変更プログラムの遅延呼び出し
  アイコン画像を指定されたサイズに変更するためのプログラム(convert)実行
  をEmacsがユーザからの入力待ち状態(idle状態)になって一定時間が経過して
  から行うようにしました。待ち時間は変数
  `twittering-url-request-sentinel-delay'で指定できます。デフォルトの
  待ち時間は1秒です。
* 「お気に入り」に対応
  「お気に入り」一覧を表示するtimeline specとして":favorites"と
  ":favorites/USER"を追加しました。":favorites/USER"で指定したユーザの
  「お気に入り」を見ることができます。`twittering-visit-timeline'(デフォ
  ルトでは"V"にbindされています)に対して":favorites/"と入力してEnter
  すると、続いてユーザ名を補完入力できます。「お気に入り」は元々のtweetの
  投稿時刻の順に表示されるので注意してください。これは「お気に入り」に
  登録した時刻を取得する方法がないためです。また、取得できる「お気に入
  り」は最大20件です。より過去にさかのぼっての取得は未対応です。
* 新たにいくつかの短縮URL生成サービスに対応
  新たに`bit.ly', `goo.gl', `is.gd', `j.mp'に対応しました。下記のような
  設定で有効にできます。
  (setq twittering-tinyurl-service 'bit.ly) ;; bit.lyの場合
  (setq twittering-tinyurl-service 'goo.gl) ;; goo.glの場合
  (setq twittering-tinyurl-service 'is.gd)  ;; is.gdの場合
  (setq twittering-tinyurl-service 'j.mp)   ;; j.mpの場合
  `bit.ly'や`j.mp'を使うにはお持ちのアカウントに応じて下記のように
  `twittering-bitly-login'と`twittering-bitly-api-key'を設定しておく必要が
  あります。
  (setq twittering-bitly-login "YOUR-LOGIN-NAME")
  (setq twittering-bitly-api-key "YOUR-API-KEY")
  Thanks to Michael Kohl and Lars Gregori.
* 公式ReTweetについての書式指定子"%c","%C","%@"の意味を変更
  公式ReTweetの`created_at'は、retweetした時刻ではなくオリジナルの
  tweetを投稿した時刻を意味するようになりました。
* spam送信者報告機能
  関数`twittering-block-and-report-as-spammer'を追加しました。tweet上で
  この関数を呼び出すと、その投稿者をブロックし、さらにspam送信者として
  報告できます。
* ブロック機能
  関数`twittering-block'を追加しました。tweet上でこの関数を呼び出すと、
  その投稿者をブロックできます。
* アイコン画像保存機能
  "(setq twittering-use-icon-storage t)"とすることで一度取得・サイズ変
  更したアイコン画像を専用のファイルに保存しておけるようになりました。
  この機能はデフォルトでは無効です。次回以降は専用ファイルに格納された
  画像が優先的に使われますのでアイコン取得・サイズ変更にかかる時間が省
  けます。
  デフォルトでは直近に描画されたアイコンを最大500個まで保存します。保
  存されるアイコンの個数は変数`twittering-icon-storage-limit'で変更で
  きます。この変数をnilに設定すると全てのアイコンが保存されます。
  アイコンを保存するファイルはデフォルトでは
  `~/.twittering-mode-icons.gz'ですが`twittering-icon-storage-file'と
  いう変数で変更できます。あるバージョンのEmacsで生成したアイコン保存
  ファイルは別のバージョンでは使えない恐れがあるので注意してください。
* 新しい書式指定子"%RT{...}"
  `twittering-status-format'で使える書式指定子として"%RT{...}"が追加さ
  れました。これは対象となるtweetが公式RTのときだけ描画されます。括弧
  の中には任意の文字列と書式指定子を入れることができ、括弧内の書式指定
  子はRTされたtweetではなくそのRT自身の情報を使って描画されます。例え
  ば、"%RT{%s}"はRTしたユーザのscreen_nameとなります。
* 公式ReTweetのキャンセル
  自分自身が投稿した公式ReTweetをtweet削除と同じ操作(デフォルトで
  は'C-cD')でキャンセルできるようになりました。
* あるユーザがフォローしているリストの補完付き選択機能
  'C-uL'で特定ユーザがフォローしているリストを補完付きで選択し、開ける
  ようになりました。
* Edit skeleton
  投稿内容編集開始時に状況に応じて自動的に文字を追加できる仕組みを導入
  しました。edit skeletonはいつ、どのような文字列を先頭に、あるいは末
  尾に追加するかの規則です。連想リスト`twittering-edit-skeleton-alist'
  に要素を追加することで、新しいedit skeletonを定義できます。edit
  skeletonの定義方法の詳細については`twittering-edit-skeleton-alist'の
  docstringを参照ください。
  デフォルトでは以下のedit skeletonが定義されています。
  none: 何も追加しません。
  footer: `twittering-edit-skeleton-footer'で指定された文字列をフッタ
  として末尾に追加します。
  footer-only-normal: footerと同様ですがreplyやdirect messageを編集す
  る際には追加を行いません。
  inherit-hashtags: 返信先に含まれるハッシュタグを末尾に追加します。
  inherit-mentions: 返信先に含まれるユーザ参照を先頭に追加します。
  inherit-any: 返信先に含まれるハッシュタグやユーザ参照を追加します。
  関数`twittering-switch-edit-skeleton'で有効なedit skeletonを切り替え
  るにはことができます。
  また、フッタ文字列`twittering-edit-skeleton-footer'の内容は関数
  `twittering-edit-skeleton-change-footer'で変更できます。
* 代替画像形式を指定する変数
  アイコン画像の形式がEmacsにサポートされていない形式である場合、画像
  をEmacsがサポートする形式に変換してから表示するのですが、その際の変
  換先の画像形式を指定する変数`twittering-fallback-image-format'を追加
  しました。デフォルトの形式はXPMです。
  下記のように設定すれば、NTEmacsでXPMを表示する際の不自然な挙動を回避
  できるかもしれません。 Thanks to Silver Chariot.
  (setq twittering-fallback-image-format 'png)

### バグ修正

* Emacs 23以降に同梱されているurlライブラリでも正しく動くよう修正
* 外部コマンドcURLでbodyが空のPOSTを正しく行えるよう修正
* Native retweetをさらにretweetできるよう修正
  オリジナルのtweetへのretweet扱いになります。
* アカウント認証時に発生する可能性のあった競合状態が起こらないよう修正
* 返信先として表示されているtweetへの返信を正しく扱うよう修正
  `twittering-show-replied-statuses'で返信先として表示されているtweetに
  対して`twittering-enter'で返信したときに、カーソル下のtweetに対する
  返信となるよう修正しました。
  Thanks to Naohiro Aota.
* 書式指定子"%L"の振舞いを修正
  `twittering-status-format'のdocstringの通りに空白が挿入されるように
  なりました。
  Thanks to Tom X. Tobin.
* アイコン画像取得の際に同一sentinelを複数回登録していたのを修正

 1.0.0: 2010-06-05
------------------

### 重要なお知らせ

#### ミニバッファからの投稿はサポート廃止予定です

twittering-modeでtweetを投稿するには、これまではミニバッファから入力す
る方法を採用していましたが、今回新機能としてポップアップバッファから投
稿できる機能を実装しました。変数 `twittering-update-status-function` を
設定することによってこの2つの方法を切り替えることができます。今回のリリー
スでは、新しいポップアップバッファがデフォルトに設定されています。従来
通りミニバッファから投稿したい場合は、この変数の値を
twittering-update-status-from-minibuffer に設定してください。

ポップアップバッファによる投稿では、従来の投稿方法に比べて次のような利
点があります:

* tweet入力時にIME等と干渉しない
* 入力途中で誤って投稿してしまうミスがおきにくい
* 入力内容の文字数を表示してくれる

### 改良

* ポップアップバッファを用いたtweetの編集、投稿機能
* 環境変数 http_proxy, HTTP_PROXY を利用した自動プロキシ設定
* 公式ReTweetサポート
* タイムライン表示のフォーマット指定子に新たなものを追加
* 一時ファイルを生成しない画像ファイル表示方法を採用
* 'timeline spec'導入による柔軟なタイムライン表示機能
* 'timeline spec'導入による複数タイムライン・複数バッファ表示のサポート
  * `twittering-initial-timeline-spec-string'を設定することで、初期化時
    に複数のタイムラインを表示させることが可能
* 自動更新のon/offをサポート(キーボードの'a'で切り替え)
* global-font-lockモードとの親和性向上
* モードラインでの未読通知 (experimental)
* フォーマット指定子 "%FILL{...}" の修正
* タイムラインの切り替え機能(キーボードの 'f' と 'b' で切り替え)
* SSLの有効/無効をモードラインの画像で表示
* アイコン画像の非同期な取得と表示
* tweetの削除機能('C-cD' で削除)
* 'gnutls', 'openssl'コマンドを利用したtlsライブラリによるHTTPS通信
* HTTPとHTTPSに個別のプロキシを設定可能に
* 画像取得時の出力を抑制
  * .emacs に (setq twittering-url-show-status nil) を追加することで有
    効にできる
* OAuth認証対応

 0.9: 2009-12-29
-----------------

### 改良

* GitHubへ移動
* 英語と日本語でWebサイトを開設
* cURLが利用可能なときはHTTPSを使ってセキュアに通信するように
* リスト対応
* フォロー/リムーブ対応
* お気に入り機能に対応
* ハッシュタグ対応
* ダイレクトメッセージ送信に対応
* URLをその場でTinyURL化する機能
* 入力文字列の文字数チェック
* ReTweetの形式を選択可能に
* 閲覧したユーザー名や、送信したつぶやきの履歴を保存
* 一度に取得するつぶやきの数をパラメータ化
* ユーザー名やURLなどの要素をTABキーで移動可能に
* 'file'コマンドを利用した画像の種類の判別
* よりわかりやすいエラー出力
* 取得済みのタイムラインのデータを保持するように
* サスペンド機能
* Imagemagickが利用可能なときは画像のリサイズを行うように
* 単体テストフレームワークの導入
* 'Proxy-connection: Keep-Alive'への対応
* 柔軟な文字列フォーマット関数の導入(twittering-format-string)
* HTTPレスポンス処理の効率改善

### バグ修正

* マウスクリックやEnterキーでURLを開けない問題を修正
* ReTweetのときはオリジナルIDを設定しないように
* URL抽出の正規表現を修正
* ユーザー名抽出の処理を修正
* モードラインを即時更新するよう修正
* 各HTTPセッションごとに一時バッファを利用するよう変更
* MD5ハッシュを利用して同じ名前の画像ファイルの衝突を回避
* センティネルでバッファをkillする際のエラー処理
* いくつかの誤字修正

### 感謝

* Alberto Garcia
* Jaemok Jeong
* Kouhei Sutou
* Naohiro Aota
* Satoshi Yatagawa
* Tadashi MATSUO
* Thomas Danckaert
* Tsuyoshi CHO
* IMAI Toshiyuki

