-
Notifications
You must be signed in to change notification settings - Fork 92
/
NEWS
762 lines (724 loc) · 37.6 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
NEWS -- The history of twittering-mode
========================================
HEAD: XXXX-XX-XX
------------------
### Important notice
* Sending a direct message with a new API.
A direct messages will be sent by a new API "POST
direct_messages/events/new", which requires a user ID of a recipient
instead of a user screen name. You can specify a recipient by a
screen name as before, but it may fail if twittering-mode has not
yet known the user ID corresponding to the recipient. In such a
case, you can avoid the problem by once visiting the timeline of the
recipient because twittering-mode will collect the user ID from the
timeline.
### 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.
- https://developer.twitter.com/en/docs/basics/counting-characters
- https://developer.twitter.com/en/docs/developer-utilities/twitter-text.html
* Improved integration with EasyPG
With the current version of twittering-mode, the configuration of
`epa-pinentry-mode' will be referred in decryption and encryption of
private information as expected.
If you use GnuPG2 (and gpg-agent distributed with GnuPG2) with Emacs
25.1 or a later version, you can input a passphrase in the Emacs
minibuffer by the following configuration.
(setq epa-pinentry-mode 'loopback)
* Support for direct_message_events timeline.
":direct_message_events" is added as a new timeline spec. It
includes both sent and received events. The timeline corresponds to
new APIs related to direct message events. It may not include events
generated by older APIs. It consists of only events within latest 30
days by the limitation of the new APIs.
By the limitation of the current implementation, only most recent 50
events will be retrieved for each update. You cannot retrieve older
events. In addition, user names and user screen names may be
rendered as "UNKNOWN-NAME(ID:...)" or "UNKNOWN-SCREEN-NAME(ID:...)"
because the new APIs do not return such names (it returns user IDs
instead). Lacked information will be filled by user infomation
collected from other timelines if possible. To correctly render
such information, you may need to re-retrieve the direct message
events timeline by invoking `twittering-erase-old-statuses' (which
is bound to "C-cC-e" in default).
### 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 "&" 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