
 NEWS -- The history of twittering-mode
========================================

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

### Important notice

### Improvements

### Bug fixes

 3.1.0: 2016-09-28
------------------

### Important notice
* Posting a native retweet of a native retweet.
  When the function `twittering-native-retweet' bound to "C-u C-c C-m"
  is invoked on a native retweet, the current version of
  twittering-mode posts a native retweet of the retweet. The
  previous version posted a native retweet of the original tweet
  that had been retweeted. The behavior is changed so that
  notifications from Twitter will be sent to the user who has posted
  the retweet earlier.
* Updating default format for rendering a tweet.
  The default value of the variable `twittering-status-format' is
  changed so that newlines are kept and a quoted tweet is rendered.
  You can restore it to the previous version by customizing the
  variable as "%i %s,  %@:\n%FILL[  ]{%T // from %f%L%r%R}\n ".

### Improvements
* Embedding all VeriSign Root CA Certificates.
  All active root CA certificates available at
  https://www.symantec.com/page.jsp?id=roots
  are embedded in `twittering-mode.el'.
* Menu.
  A pretty menu is added to the menubar.
* Support for direct messages longer than 140 characters.
* New format specifier "%QT{...}" for `twittering-status-format'.
  In `twittering-status-format', you can use "%QT{...}" to render a
  quoted tweet. The quoted tweet is rendered with the format string in
  the braces. For example, "%QT{%s}" means the author of the quoted
  tweet. The specifier is rendered only when the tweet quotes another
  tweet. 
  You can see the quoted tweet itself by executing
  `twittering-other-user-timeline' (which is bound to "v" in default)
  on the timestamp of the quoted tweet.
* Rendering an ampersand in a posted text as "&" correctly.
  If a tweet includes a character "&",  it is encoded to "&amp;" in
  the corresponding JSON object, which is retrieved as a part of a
  timeline. The current version of twittering-mode decodes it.
  Note that counting a effective length of a tweet including an
  ampersand may not work well. There are some uncertain behaviors of
  the Twitter server;
  - A tweet consisting of 120 ampersands can be posted without errors,
    but a tweet consisting of 121 ampersands causes the following
    error; "Status is over 140 characters."
  - A tweet consisting of 115 ampersands and 25 numeric characters
    can be posted without errors, a tweet consisting of 116 and 24
    numeric characters causes the following error;
    "Status is over 140 characters."
* Retweeting your own tweet.
  You can retweet your own tweet.

### Bug fixes
* Fix of invoking a hook twice for the same timeline.
* Fix a URL for a native retweet.

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

### Important notice
* Obsolete implicit sign string feature.
  The function `twittering-sign-string-function' and the variable
  `twittering-sign-simple-string' are now obsolete. The `edit
  skeleton' feature can be used as an alternative. For example,
  the configuration
  (setq twittering-sign-simple-string "footer")
  is equivalent to the following one;
  (setq twittering-edit-skeleton-footer " [footer]")
  (setq twittering-edit-skeleton 'footer)
* Obsolete variable `twittering-scroll-mode'
  The variable `twittering-scroll-mode' is obsolete. The current
  version of twittering-mode always behaves as the previous version
  does on scroll-mode. To track the latest tweet, put the cursor on
  the header or footer that is rendered on the latest end.
* A new key binding for "C-cC-w", future replacement for "C-cD".
  "C-cD" has been bound to `twittering-delete-status`, the function to
  delete a tweet. But the binding violates the Emacs Key Binding
  Conventions. "C-cC-w" is bound to the function. The old binding is
  also valid, but the new one is recommended.

### Improvements
* Edit skeleton according to the current timeline.
  You can define edit skeletons that refer to the current timeline.
  See the docstring of the variable `twittering-edit-skeleton-alist'.
  In addition, `inherit-hashtags' and `inherit-any', the predefined
  edit skeletons, insert hashtags if the current timeline is a search
  timeline where the query string includes hashtags.
* Disabling overlay on excessive string.
  In default, `twittering-edit-mode' emphasizes too long strings by
  putting the overlay `twittering-warning-overlay' on characters
  following the 140th character. On some environments, however, some
  input methods seem to interfere the update of the overlay. In such
  case, you may avoid the problems by disabling the update of the
  overlay as follows.
  (setq twittering-disable-overlay-on-too-long-string t)
* Jump to next/previous URI
  You can go to tne next or previous URI explicitly written in a tweet
  by the command `twittering-goto-next-uri' or
  `twittering-goto-previous-uri'.
  Also, you can use the commands, `twittering-goto-next-thing' and
  `twittering-goto-previous-thing'. With a prefix argument by
  preceding "C-u", they ignore things except URIs explicitly written
  in a tweet.
* Additional root CA certificates.
  The root CA certificates `VeriSign Class 3 Public Primary CA - G2'
  and `GeoTrust Global CA' are also embedded in `twittering-mode.el'.
  They are used for verifying `api.twitter.com' and
  `search.twitter.com', respectively. The certificate `Equifax Secure
  Certificate Authority', which has been embedded, is now used for
  verifying the server `www.googleapis.com' when shortening a URI.
* Support for new URL shortening services.
  You can use `migre.me' as URL shortening service by the following.
  (setq twittering-tinyurl-service 'migre.me) ;; for mig.re
* Support for retweeted_by_user and retweeted_to_user timeline.
  ":retweeted_by_user/USER" and ":retweeted_to_user/USER" are added as
  a new timeline specs. The former consists of retweets posted by the
  user and the latter consists of retweets that will be sent to the
  home timeline of the user.
  After specifying ":retweeted_by_user/" or ":retweeted_to_user/" for
  `twittering-visit-timeline', which is bound to "V" in default, you
  can supplement a username with referring the username history.
* Counting characters with considering the t.co link wrapper.
  When editing a tweet, the t.co link wrapper will be taken into
  account. The length of wrapped URIs is retrieved with
  help/configuration API periodically. The default period is 1 day.
  You can configure the interval of updating the length by the
  variable `twittering-service-configuration-update-interval'.
* Ad-hoc support for non-ASCII hashtags.
  Non-ASCII hashtags are decorated and you can visit its timeline by
  `v'. Note that the rule of detecting hashtags may be looser than
  that of the Twitter web UI. Problems have not been found yet, but a
  string considered as a hashtag in twittering-mode may not be treated
  as a hashtag in the Twitter web UI.
* Rendering the t.co wrapped link as the original URL.
  If a tweet includes a link wrapped by the t.co service, it is
  rendered as the original URL. If `json.el' is unavailable, a link on
  a search timeline is rendered as the wrapped URL. But the link will
  be opened as the wrapped URL when you invoke `twittering-enter'
  (bound to `C-m' in default).
* Posting a tweet consiting of mentions from pop-up buffer.
  From pop-up buffer, you can post a tweet consisting of
  mentions.
* Restoring timeline buffers with `revive.el' by HIROSE Yuuji.
  Timeline buffers can be restored with the Emacs LISP program
  `revive.el' written by HIROSE Yuuji. There are two types of
  configuration.
  1. manual registration
    (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. automatic registration (for revive.el 2.19)
    (require 'revive)
    (twittering-setup-revive)
  Note that `(add-to-list ...)' of the manual configuration must be
  evaluated before loading `revive.el' and `(twittering-setup-revive)'
  of the automatic one must be evaluated after loading `revive.el'.
  Since the Emacs LISP program `windows.el' written by HIROSE Yuuji
  implicitly loads `revive.el' if possible, you should also take care
  of the order of loading `windows.el' and the configuration.
* New format specifier "%u" for `twittering-retweet-format'.
  "%u" is added as a new format specifier for
  `twittering-retweet-format'. It is replaced with the URL of the
  cited tweet.
* Skeleton for initializing an organic retweet.
  You can use a skeleton as the variable `twittering-retweet-format'
  for initializing an organic retweet. This means that you can also
  specify the initial cursor position. Strings included in the
  skeleton are converted with the below replacement table and then the
  skeleton is inserted with `skeleton-insert'.
  The replacement table is as follows.
    %s - The screen-name of the cited tweet.
    %t - The text of the cited tweet.
    %u - The URL of the cited tweet.
    %# - The ID of the cited tweet.
    %% - % itself.
  This is equivalent to the rule applied for
  `twittering-retweet-format' as a string.
  Note that it is inserted before the edit skeleton specified by
  `twittering-edit-skeleton' is performed.
* Tweet type of edit skeleton for an organic retweet.
  The symbol `organic-retweet' is added as a tweet type specifying the
  type of the tweet being edited, which is referred by edit skeleton.
  You can define an edit skeleton that is performed only for organic
  retweets. Note that edit skeletons cannot refer to the tweet being
  retweeted in the current implementation.
* Support for list names including non-ASCII characters.
* Display of replied tweets on a search timeline.
  If `json.el' is available, twittering-mode can retrieve an ID which
  a tweet on a search timeline replies to. If so, replied tweets can
  be displayed by `twittering-toggle-show-replied-statuses' bound to
  "r" in default.
* Header and footer on a timeline buffer.
  On a timeline buffer, the header and footer are rendered. They are
  special field and do not correspond to tweets. If you press the
  enter key (or invoking `twittering-enter') on the header or footer,
  the timeline buffer will be extended by retrieving more tweets
  according to whether the cursor is placed on the latest end or
  oldest one.
  You can track the latest tweet by putting the cursor on the latest
  side of the header and footer.
  You can customize the header and footer strings with the variables
  `twittering-timeline-header' and `twittering-timeline-footer',
  respectively. Their face can also be customized with the variables
  `twittering-timeline-header-face' and
  `twittering-timeline-footer-face'.
* Support for exclude-if timelines.
  ":exclude-if/FUNC/SPEC" is added as a new timeline spec. The
  timeline equals SPEC, except that it does not include tweets that
  the function FUNC returns non-nil for. FUNC must be a function that
  receives an alist corresponding to a tweet as an argument. A lambda
  expression and a symbol bound to a function are valid as FUNC. But a
  symbol name must not include two special characters, "(" or "/". You
  can specify any timeline spec for SPEC. For example, you can ignore
  tweets including "WORD" from the home  timeline by the following
  timeline spec; ":exclude-if/(lambda (tweet) (string-match \"WORD\"
  (cdr (assq 'text tweet))))/:home".
* Support for merge timelines.
  Merge timelines such as "(SPEC1+SPEC2)" or "(SPEC1+SPEC2+SPEC3)" and
  so on, are added as new timeline specs. The merge timeline consists
  of all tweets in the specified timelines. You can specify any
  timeline spec for constituents. For example, you can see all direct
  messages, which you have sent or received, on a buffer by the
  following timeline spec;
  "(:direct_messages+:direct_messages_sent)".
* New hook invoked when rendering tweets.
  A new hook variable `twittering-new-tweets-rendered-hook' is
  added. The hook is invoked when new tweets are rendered. It is not
  invoked when rendering tweets that are retrieved formerly. Since the
  existing hook `twittering-new-tweets-hook' is invoked for each
  successful retrieval of tweets, it may be invoked for tweets that
  are not rendered in composite timelines such as exclude-if and merge
  timelines. The new hook works well for composite timelines.
  In the new hook, you can use `twittering-rendered-new-tweets' as a
  list of new tweets. `twittering-rendered-new-tweets-spec' and
  `twittering-rendered-new-tweets-spec-string' can be used as the
  timeline spec and the timeline spec string. For detail, see the
  docstring of the new hook variable.
* New hook invoked after initializing global variables.
  A new hook variable `twittering-mode-init-hook' is added. The hook
  is invoked after initializing global variables. Unlike
  `twittering-mode-hook', which is invoked every time a buffer is
  generated for twittering-mode, the new hook invoked only once.
* Description on a pop-up edit buffer.
  The description is rendered on the top of the pop-up edit
  buffer. Which the tweet is a reply, a direct message or an
  independent ordinary tweet is explicitly displayed. You can also
  copy the tweet being replied.
* Switch of a reply and a normal tweet on a pop-up edit buffer.
  You can toggle whether the tweet being edited will be sent as a
  reply or a normal tweet by invoking `twittering-edit-toggle-reply'
  bound to "C-c C-r" in default.
* Support for exclude-re timelines.
  ":exclude-re/REGEXP/SPEC" is added as a new timeline spec. The
  timeline equals SPEC, except that it does not include tweets that
  match the regular expression REGEXP. In REGEXP, a slash must be
  escaped with a backslash. For example, tweets including a slash are
  excluded from the timeline corresponding to the Emacs string literal
  ":exclude-re/\\//:home".
* Iterative retrieval of a series of replies.
  You can trace back a series of replies by a new function
  `twittering-toggle-or-retrieve-replied-statuses' bound to "R" in
  default. The function behaves as follows:
  - If some of tweets in the series of replies pointed by the cursor
    have not been rendered, try to show them as possible. If some of
    them have not been retrieved yet, retrieve the latest one and show
    it.
  - If all tweets in the series of replies pointed by the cursor
    have been rendered, hide them.
  - If the cursor does not point to one of tweets in a series of
    replies, do nothing.
* Configuration of how to open a window for an edit buffer.
  A new variable `twittering-pop-to-buffer-function' is added. It
  specifies how to open a window for an edit buffer. The default value
  is `twittering-pop-to-buffer-in-bottom-largest-window', which opens
  a window by splitting the largest window on the bottom of the
  current frame. You can also use the function
  `twittering-pop-to-buffer-in-current-window', which splits the
  current window.
* Support for `single tweet' timelines.
  ":single/ID" is added as a new timeline spec. The timeline consists
  of a tweet specified by ID. You can read a very old tweet by using
  the timeline spec.
* Single tweet timeline from a URL in a tweet.
  You can visit a `single tweet' timeline from a URL pointing to the
  tweet by invoking `twittering-other-user-timeline' on the URL. The
  function is bound to "v" in default.
* New command to get tweets before a specific time.
  By using the new command `twittering-get-tweets-before', you can get
  tweets of the current timeline before a specific time.
* Support for backward retrieval of favorites timeline.
* Different intervals of retrieving timelines.
  An interval of retrieving each timeline can be configured by the new
  variable `twittering-relative-retrieval-interval-alist'. The alist
  consists of pairs of a regexp and a relative interval. The regexp
  specifies timelines and they are retrieved at intervals that are the
  relative interval times as long as the variable
  `twittering-timer-interval'.
* Support for the Twitter REST API v1.1.
  The default value of `twittering-service-method' is changed to
  `twitter-api-v1.1'. The configuration means that twittering-mode
  uses the Twitter REST API v1.1. The service method requires SSL
  connection and JSON parser. Note that the former requires cURL with
  OpenSSL, GNU Wget with OpenSSL, OpenSSL or GnuTLS and the latter
  requires `json.el' that is not distributed with Emacs 22 or
  earlier.
  In addition, some timelines are obsolete in the Twitter REST API
  v1.1. The obsolete timeline spec strings follow; ":friends",
  ":replies", ":public", ":retweeted_by_me", ":retweeted_to_me",
  ":retweeted_by_user/USER", ":retweeted_to_user/USER".

### Bug fixes
* Fix of displaying a message of authorization.
* Fix of confirmation of available connection methods.
* Fix of the function for HMAC-SHA1.
  Results from the function `twittering-hmac-sha1' might return
  incorrect digests depending on the current coding system. The
  problem has been fixed.
* Fix of confusion of a username consisting of digits with a user ID.
  The confusion when retrieving `user_timeline' has been fixed. But
  the confusion when retrieving `favorites' for other users has not
  been fixed yet because the API for `favorites' has no parameters to
  directly specify a screen name not a user ID.
  Thanks to Makoto Fujiwara who reported this problem.
* Fix of unintentional cursor motion on editing a tweet.
  If the current buffer was not managed by `twittering-mode', the
  cursor of the buffer was moved without intention by calling
  `twittering-update-status-interactive' from the buffer. The bug has
  been fixed.
  Thanks to mofigan who reported this problem.
* Fix of storing icons on some cases.
  Icons were not correctly saved if `twittering-icon-storage-limit' or
  `twittering-convert-fix-size' was nil. The bug has been fixed.
  Thanks to HufflepuffBR who reported this problem about the former
  variable `twittering-icon-storage-limit'.
* Fix of unconditional addition of `load-path' on byte-compilation.
  On byte-compilation, the directories `emacs21' and `url-emacs21',
  which are included in the repository of twittering-mode, were
  unconditionally added into `load-path'. Due to this bug, some macros
  were embedded as obsolete definitions for Emacs21 in the result of
  byte-compilation. Some functions in the result cause errors on Emacs
  22 or later because the obsolete definitions conflict with Emacs
  newer than 21. On Emacs 22 or later, the directories are no longer
  added to `load-path' on byte-compilation. The bug has been fixed.
  Thanks to HKey who has discovered the bug.
* Fix of the strange motion of the cursor.
  The cursor motion based on logical lines had caused non-intuitive
  behavior by interfering text property attaced to tweets. The problem
  did not appear when the motion was based on display line. The bug
  has been fixed.
  Thanks to lemit who reported the problem.
* Deletion of a tweet from a buffer after the API is succeeded.
  A tweet is deleted from a buffer after receiving a successful
  response of the `destroy-status' API. If the API ends in failure,
  you can try to delete the status again because the status remains on
  the buffer.
* Fix of the escape of a query string in a search timeline spec.
* Fix of errors raised by asynchronous sentinels.
  Previously, an error might be raised from a sentinel when a timeline of
  non-existent user was requested. The bug has been fixed.

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

### Important notice

### Improvements

* Support for storing private information in a file encrypted by master
  password. Once you save the authorized account by using master password,
  you have to input PIN no longer. This is enabled by
  `(setq twittering-use-master-password t)'.
  The private information is stored in `~/.twittering-mode.gpg', which can
  be specified by `twittering-private-info-file'.
  To enable master password, you need GnuPG and an additional Emacs LISP
  program, which is `alpaca.el' or EasyPG (Emacs23 includes EasyPG).
  To use with `alpaca.el', you should use the version 0.13. With other
  versions of `alpaca.el' the current implementation may not work well
  because it deeply depends on internal implementation of `alpaca.el'.
* Authentication via xAuth.
  You can enable xAuth by "(setq twittering-auth-method 'xauth)".
* Rejection of invalid PIN code input and strip extra white spaces.
* Confirmation of process status for avoiding dead-lock.
* Native retweets on `user', `friends', `mentions' and `public' timelines.
* Detection of abnormal exit of an invoked process.
  The exit-status on abnormal exit is printed to the buffer "*Messages*".
* Support for disabling server authentication.
  Server authentication is enabled by default.
  It can be disabled by "(setq twittering-allow-insecure-server-cert t)".
* Replacement of unknown numeric character references with its alternative.
  The alternative can be specified by "twittering-unicode-replacement-char".
  Its default value is U+FFFD.
* Addition of the files ".nosearch".
  The files ".nosearch" are added to sub-directories. This makes the sub-
  directories be excluded from recursive registration of "load-path".
* Suppression of multiple authorization.
  Authorization will be performed only once even if multiple timelines
  are specified as initial timelines.
* Independence of byte-compiled form from "cl".
  Byte-compiled `twittering-mode.el' does not depend on `cl'.
* Update of the embedded CA certificate.
  The embedded CA certificate is replaced with `Equifax Secure Certificate
  Authority'.
* Support for StatusNet.
  You can switch `twittering-mode.el' to StatusNet mode by
  "(setq twittering-service-method 'statusnet)". Note that you cannot
  use one instance of Emacs with `twittering-mode.el' for Twitter and
  StatusNet simultaneously.
  To use StatusNet, you must configure variables of host information.
  For the service on `http://identi.ca/', you may require the below
  configuration.
  (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 "")
* Copy a URI in a tweet or a URI pointing to the tweet by "U".
  Thanks to Faried Nawaz.
* Copy tweets by "C-<mouse-3>".
  Thanks to Faried Nawaz.
* Support for `wget'.
  The external program `wget' can be used for communicating with Twitter
  as well as `curl'. You can give priority to `wget' by the below
  configuration.
  (setq twittering-connection-type-order '(wget curl native))
* Display of the current connection method on the mode-line.
  By default, the current connection method is displayed on the mode-line.
  You can disable it by "(setq twittering-display-connection-method nil)".
* Silent retrieval of icons.
  The default value of `twittering-url-show-status' is changed to nil.
  So, icons are retrieved silently by default.
* New connection methods, `urllib-http' and `urllib-https'.
  New connection methods are added, which are implemented by using `url'
  library. The library supports HTTP redirection, but it may be slow and
  unstable. This method is not recommended if you can use other methods.
  If you give incorrect account information on BASIC authentication or
  xAuth with this new methods, you will be asked to input account
  information again. This behavior is a function of the url library, but
  twittering-mode cannot use account information given on the second try.
  When you are asked to input it again, cancel it by 'C-g' and do
  'M-x twit'.
* Redisplaying tweets with idle timer.
  Twittering-mode waits for Emacs to become idle before it redisplays
  tweets for time and icon image. Tweets are redisplayed each time Emacs
  remains idle for a certain time specified by the variable
  `twittering-timer-interval-for-redisplaying', which is 1 second by
  default.
* Retrieval of icon images by `curl' and `wget'.
  Icon images can be retrieved by the same connection method as that used
  for retrieving tweets. The priority of methods is similarly determined
  by `twittering-connection-type-order'.
* Lazy invocation of `convert'.
  The program `convert' for converting the size of icon images is invoked
  after Emacs remains idle a certain time. The delay will prevent Emacs
  from stucking on inputting characters on other buffer. The delay time is
  specified by the new variable `twittering-url-request-sentinel-delay',
  which is 1 second by default.
* Support for favorites timeline.
  ":favorites" and ":favorites/USER" are added as new timeline specs.
  By using the latter, you can read favorites for other users. You can
  specify a username with completion when you input ":favorites/" for
  `twittering-visit-timeline' bound to "V" in default.
  Note that favorites are rendered in order of time when each tweet is
  posted. This is because it is impossible to retrieve the time when a
  tweet was favorited. At most, 20 favorites can be retrieved. Backward
  retrieval of more previous favorites is not supported yet.
* Support for new URL shortening services.
  You can use `bit.ly', `goo.gl', `is.gd' or `j.mp' as URL shortening
  service by the following.
  (setq twittering-tinyurl-service 'bit.ly) ;; for bit.ly
  (setq twittering-tinyurl-service 'goo.gl) ;; for goo.gl
  (setq twittering-tinyurl-service 'is.gd)  ;; for is.gd
  (setq twittering-tinyurl-service 'j.mp)   ;; for j.mp
  To use `bit.ly' or `j.mp', you need to configure `twittering-bitly-login'
  and `twittering-bitly-api-key' according to your account as follows.
  (setq twittering-bitly-login "YOUR-LOGIN-NAME")
  (setq twittering-bitly-api-key "YOUR-API-KEY")
  Thanks to Michael Kohl and Lars Gregori.
* Change of the format specifiers, "%c", "%C", "%@", for official ReTweet.
  `created_at' for official ReTweet means when the original tweet was
  posted instead of when it was retweeted.
* Function to report a user as a spammer.
  The function `twittering-block-and-report-as-spammer' is added. By
  invoking the function on a tweet, you can block its author and report
  him or her as a spammer.
* Function to block a user.
  The function `twittering-block' is added. By invoking the function
  on a tweet, you can block its author.
* Support for persistent icon storage.
  By "(setq twittering-use-icon-storage t)", you can save retrieved
  and resized icon images into a persistent storage, which is disabled
  in default. On next and later invocation, twittering-mode can
  display icons faster because the storage reduces time required to
  retrieve and resize images.
  In default, recently rendered 500 icons are stored at most. You can
  change the limit by the variable `twittering-icon-storage-limit'. To
  store all icons, configure the variable as nil.
  The default storage file is `~/.twittering-mode-icons.gz'. You can
  change it by changing `twittering-icon-storage-file'. Note that icon
  images in the storage generated on a certain version of Emacs may be
  unavailable on another version of Emacs.
* New format specifier "%RT{...}".
  For `twittering-status-format', the new format specifier "%RT{...}"
  is added, which is rendered only when the tweet is an official
  ReTweet. In the brace, you can use any format specifiers, which are
  rendered with the information of the retweet itself instead of the
  retweeted original tweet. For example, "%RT{%s}" means who retweeted
  the tweet.
* Cancel of official ReTweets.
  If an official ReTweet has been posted by yourself, you can cancel
  it by 'C-cD', which is the same way of deleting a tweet.
* Completion of lists to which a specific user subscribes.
  You can visit a list to which a specific user subscribes by 'C-uL'.
  Thanks to Naohiro Aota.
* Edit skeleton.
  Edit skeleton is a dynamic template system on posting a tweet. You
  can define an "edit skeleton", which specifies what string is
  automatically inserted as a footer, header or others before editing
  a tweet. `twittering-edit-skeleton-alist' is the alist of edit
  skeletons. For further details, see docstring of
  `twittering-edit-skeleton-alist'.
  The following edit skeletons are pre-defined;
  none: insert nothing,
  footer: insert `twittering-edit-skeleton-footer' as a footer,
  footer-only-normal: insert `twittering-edit-skeleton-footer' as a
  footer only when the tweet being edited is a normal tweet, not a
  reply or direct message,
  inherit-hashtags: insert hashtags extracted from the replied tweet,
  inherit-mentions: insert mentions extracted from the replied tweet,
  inherit-any: insert hashtags and mentions extracted from the replied
  tweet.
  You can switch the current edit skeleton by invoking
  `twittering-switch-edit-skeleton'.
  The footer string, `twittering-edit-skeleton-footer', can be changed
  by invoking `twittering-edit-skeleton-change-footer'.
* Variable of fallback image format.
  You can change the fallback format of images by changing the
  variable `twittering-fallback-image-format'. The default format is
  XPM. Images which Emacs does not supports are displayed by
  converting them into the fallback format.
  By the following configuration, you may avoid strange behaviors when
  displaying XPM images on NTEmacs. Thanks to Silver Chariot.
  (setq twittering-fallback-image-format 'png)

### Bug fixes

* Support for the url library included in Emacs 23 and later.
* Fix of options of `curl' for POST with an empty body.
* Fix of retweeting a retweet.
* Fix of a race condition on abnormal exit of a process for verification.
* Fix of replying to tweets displayed as replied tweets.
  Thanks to Naohiro Aota.
* Fix of rendering the format specifier "%L".
  The specifier "%L" is correctly rendered with a preceding whitespace.
  Thanks to Tom X. Tobin.
* Fix of repeatedly registering a sentinel for retrieving an image.

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

### Important notice

#### Posting tweets with minibuffer is obsolete now.

There's two way to edit and post tweets in twittering-mode: with
minibuffer (existing way), and with pop-up buffer (new feature!).  You
can choose it by setting the variable
`twittering-update-status-function`. Currently its default value is
the new way, `twittering-update-status-from-pop-up-buffer`. If you
want to post from minibuffer, set the variable value to
`twittering-update-status-from-minibuffer`.

The new feature, pop-up buffer, has several advantages over the
existing way.

* Not conflicting with input methods.
* Much less risk of posting halfway typed tweets by error.
* Visual assertion of length of tweets.

### Improvements

* Introduction of a concept 'timeline spec'.
* Pop-up buffer to edit and post tweets.
* Auto proxy setup with environment variables (http_proxy, HTTP_PROXY)
* Support for official ReTweet.
* Added some format specifiers of tweets.
* Support for recursive format specifiers such as
  "%FILL{%FACE[bold]{%C{%m/%d}}: %T}".
* Support for user-defined prefix on filling by "%FILL[prefix]{...}".
* Displaying image files without temporary files.
* Support multiple buffers, where their name is derived from timeline spec.
* Multiple initial timelines by setting a list of timeline spec strings to
  the variable `twittering-initial-timeline-spec-string'.
* Toggle automatic retrieval of the timeline by pressing 'a'.
* Improved compatibility with global-font-lock mode.
* Unread statuses notifier on mode-line (experimental).
* Switching timeline buffers by pressing 'f' or 'b'.
* Graphical indicators for SSL and ACTIVE/INACTIVE state on mode-line.
* Asynchronous retrieval of icon images.
* Deleting a tweet by inputting 'C-cD'.
* HTTPS connection using `tls' library working with an external command
  `gnutls' or `openssl' instead of `curl'.
* Individual proxy configurations for HTTP and HTTPS.
  If `twittering-proxy-server' and `twittering-proxy-port' are non-nil,
  they have priority over the other variables `twittering-http-proxy-*' and
  `twittering-https-proxy-*'. To use individual proxies for HTTP and HTTPS,
  you must keep the prior variables (`twittering-proxy-server' and
  `twittering-proxy-port') nil.
* Silent retrieval of icon images.
  You can enable silent retrieval by "(setq twittering-url-show-status nil)".
* Authentication via OAuth.
  It requires a consumer information registered with Twitter and an external
  WWW browser to authorize a request token. Additionally, for SSL, it
  requires an external command `curl' or another command included in the
  variable `tls-program', which may be `openssl' or `gnutls-cli'.
  (Caution: Neither `openssl' nor `gnutls-cli' support SSL via proxy.)
  You can disable SSL for OAuth by "(setq twittering-oauth-use-ssl nil)".
  You can enable OAuth by "(setq twittering-auth-method 'oauth)".
  If `twittering-oauth-invoke-browser' is non-nil, twittering-mode
  automatically opens a browser on authorization.

### Bug fixes

* Avoid SSL certificate error by embedding CA cert in code.
  * twittering-cert-file
  * twittering-ensure-ca-cert
* Fix URI (percent) encoding (thanks to IMAI Toshiyuki).
  * twittering-url-reserved-p
  * twittering-percent-encode
* Improved portability.
  * twittering-completing-read
* And lots of minor fixes

### Thanks to

* Alberto Garcia
* IMAI Toshiyuki

 0.9.0: 2009-12-29
-------------------

### Improvements

* Moved to GitHub.
* Brand new web site in English and Japanese.
* Secure sessions via HTTPS if 'cURL' is available.
* Lists support.
* Follow/remove support.
* Favorite/unfavorite support.
* Hash tag support.
* Direct message support.
* On-the-spot TinyURL-ize(tinyurl or to.ly).
* On-the-fly tweet length check.
* ReTweet format string.
* Remembers visited user names and tweets.
* Parameterized the number of tweets retrieved at a time.
* Walk through items(username, URL, etc) by TAB.
* Image type discriminant with 'file' program if available.
* More descriptive error messages on minibuffer.
* Do not discard old timeline data as possible.
* Suspend by hitting 'q'.
* Image file resize with 'convert' program(imagemagick) if available.
* Unit test framework was introduced.
* Support 'Proxy-connection: Keep-Alive'.
* Flexible format string function (twittering-format-string).
* Refactored 'twittering-format-status' by twitterint-format-string.
* More efficient HTTP response processing.

### Bug fixes

* URL cannot not be opened by mouse-click or Enter.
* Don't set the original status ID when retweeting.
* Wrong regexp for searching URL in status text.
* Username extraction from status text.
* Update mode-line immediately.
* Use a temporary buffer for each HTTP session.
* Use MD5 hash to distinguish image files with the same name.
* Check whether temp buffers are alive in sentinels before killing them.
* And some typos.

### Thanks to

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