Switch branches/tags
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
730 lines (691 sloc) 35.7 KB
NEWS -- The history of twittering-mode
### Important notice
### Improvements
* Support for displaying direct messages longer than 140 characters.
* Support for displaying user information.
You can display the user information of the pointed tweet by
invoking `twittering-display-user-information' (which is bound to
"=" in default).
* Support for posting a tweet longer than 140 characters.
Note that Twitter now measures the "length" of a tweet by a total
weight of the tweet, not a simple number of characters.
The current measure is based on weights defined for each Unicode
code-point. The current version of twittering-mode displays the
total weight of a tweet on the mode-line of an edit buffer.
Currently, a tweet can include 280 characters if all weights of
characters are 100. The weights of ASCII characters are 100. Weights
of other characters may be 100 or 200 currently. For example,
weights of Tibetan characters are 100 and those of Ethiopic
characters are 200. For detail, see the following pages.
### 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
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
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 "&" 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
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 `' and
`', respectively. The certificate `Equifax Secure
Certificate Authority', which has been embedded, is now used for
verifying the server `' when shortening a URI.
* Support for new URL shortening services.
You can use `' as URL shortening service by the following.
(setq twittering-tinyurl-service ' ;; for
* 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 link wrapper.
When editing a tweet, the 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 wrapped link as the original URL.
If a tweet includes a link wrapped by the 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
* 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
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)
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
* 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;
* 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
* 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
- 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
* 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
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
* 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 `', you may require the below
(setq twittering-service-method 'statusnet)
(setq twittering-auth-method 'basic)
(setq twittering-username "YOUR-ACCOUNT-NAME")
;; host
(setq twittering-api-host "")
(setq twittering-api-search-host "")
(setq twittering-web-host "")
;; 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
(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
* 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 `', `', `' or `' as URL shortening
service by the following.
(setq twittering-tinyurl-service ' ;; for
(setq twittering-tinyurl-service ' ;; for
(setq twittering-tinyurl-service ' ;; for
(setq twittering-tinyurl-service ' ;; for
To use `' or `', 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
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
You can switch the current edit skeleton by invoking
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
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
* 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