Decode surrogate pairs in strings returned by `json-read'.
Thanks to multiSnow who reported the problem.

* twittering-mode.el: Decode surrogate pairs in strings returned
by `json-read'. A new advice is added for decoding surrogate
pairs.
A character not in the Basic Multilingual Plane is
represented by a surrogate pair in JSON (RFC4627). This is similar
to CESU-8. But the function `json-read' in `json.el' does not
correctly decode surrogate pairs. `json-read' returns a string
including invalid code points from U+D800 to U+DFFF.
`twittering-json-read' now decodes them by using a new advice.
Thanks to multiSnow who reported the problem.
(twittering-surrogate-pair-regexp): new constant that matches a
surrogate pair in CESU-8.
(twittering-decode-surrogate-pairs-as-cesu-8): new function that
decodes surrogate pairs in a given string similarly to CESU-8.
(json-read-string): new advice for decoding surrogate pairs.
(twittering-json-read): use the new advice for decoding surrogate
pairs in strings returned by `json-read'.
Add `twittering-assoc-string' for portability.

* twittering-mode.el: Add `twittering-assoc-string' for
portability. In Emacs 21, the function `assoc-string' is not
defined. In such case, the reimplemented version is
used. Othewise, `twittering-assoc-string' is an alias of
`assoc-string'.
(twittering-assoc-string): new function for portability.
(twittering-get-server-info): replace `assoc-string' with
`twittering-assoc-string'.
Display rate-limit information for each API.

* twittering-mode.el: Display rate-limit information for each API.
(twittering-api-limit-info-alist): new variable for storing
rate-limit information for each API.
(twittering-timeline-spec-to-api-table): new variable for storing
combination of timeline spec and an API for retrieving the
timeline.
(twittering-update-api-table): new function for registering a
timeline spec and an API with the new variable
`twittering-timeline-spec-to-api-table'.
(twittering-make-rate-limit-alist): new function.
(twittering-update-rate-limit-info): new function for updating the
new variables `twittering-api-limit-info-alist' and
`twittering-timeline-spec-to-api-table'.
(twittering-update-server-info): update rate-limit information
with new function.
(twittering-get-server-info): removed.
(twittering-get-ratelimit-alist): new function.
(twittering-get-ratelimit-remaining): use the new function
`twittering-get-ratelimit-alist'.
(twittering-get-ratelimit-limit): likewise.
(twittering-get-ratelimit-indicator-string): new function for
making an indicator string of rate-limit information.
(twittering-mode-line-buffer-identification): make an indicator
string of rate-limit information by the new function
`twittering-get-ratelimit-indicator-string'.
Replace `delete-dups' with `twittering-remove-duplicates'.

* twittering-mode.el: Replace `delete-dups' with
`twittering-remove-duplicates' for portability.
(twittering-update-active-buffers): replace `delete-dups' with
`twittering-remove-duplicates' for portability.
Merge remote branch 'upstream/master' into develop
Suppress an error on a sentinel.

* twittering-mode.el: Suppress an error on a sentinel. Previously,
an error might be raised from a sentinel when a timeline of
non-existent user was requested. A sentinel for such a request
tries to remove the timeline spec string corresponding to
non-existent user from the history. In the process, conversion
from an invalid timeline spec string had caused an error.
(twittering-string-to-timeline-spec): add an optional argument
NOERROR. If NOERROR is non-nil, the function does not raise an
error even if SPEC-STR is invalid as a timeline spec string.
(twittering-equal-string-as-timeline): do not raise an error even
if either SPEC-STR1 or SPEC-STR2 is invalid as a timeline spec
string.
Reduce API rate limit information on mode-line.

* twittering-mode.el: Reduce API rate limit information on
mode-line.
(twittering-get-ratelimit-indicator-string): reduce timelines
retrieved by a common API.
Check effective length of tweet when posting from minibuffer
Add ChangeLog for the contribution by tomykaira.
Release the version 3.0.0.

* LAST-VERSION, NEWS, NEWS.ja, VERSION, doc/web/index.text,
doc/web/ja.po, doc/web/publish.rb, doc/web/screenshot.text:
release 3.0.0.
Fix the bug that a hook may be invoked twice for the same timeline.

* twittering-mode.el: Fix the bug that a hook may be invoked twice
for the same timeline.
(twittering-add-statuses-to-timeline-data): do not invoke a hook
twice for the timeline spec given as `spec'.
Fix the bug that retrieved tweets may not be rendered.
Thanks to irie who reported the problem.

* twittering-mode.el: Fix the bug that retrieved tweets may not be
rendered. This bug is caused by the previous commit. Thanks to
irie who reported the problem.
(twittering-add-statuses-to-timeline-data): call
`twittering-render-timeline' correctly.
create twittering-stream repository
Merge remote-tracking branch 'upstream/master' into develop
fix
propertize retweeted user