Explicitly signal an error when a request token cannot be retrieved.

* twittering-mode.el: Explicitly signal an error when
twittering-mode fails to retrieve a request token.
(twittering-oauth-get-access-token): signal an error when
twittering-mode fails to retrieve a request token.
Add a test for parsing JSON with a character unsupported by Emacs.

* test/test-twittering-mode.el: Add a test for parsing JSON with a
character unsupported by Emacs.
Add a test for parsing XML with a character unsupported by Emacs.

* test/test-twittering-mode.el: Add a test for parsing XML with a
character unsupported by Emacs.
Confirm that a file is readable before decrypting it.

* twittering-mode.el: Confirm that a file is readable before
decrypting it.
(twittering-read-from-encrypted-file): confirm that FILE is
readable.
Expand a path before invoking the function `epg-decrypt-file'.

* twittering-mode.el: Expand a path before invoking the function
`epg-decrypt-file'.
(twittering-read-from-encrypted-file): expand FILE before invoking
`epg-decrypt-file'.
Do not record the edit buffer in the list of recently selected ones.
Thanks to tdkn who reported the behavior related to the list.

* twittering-mode.el: Do not record the edit buffer in the list of
recently selected ones. Thanks to tdkn who reported the behavior
related to the list.
(twittering-update-status-from-pop-up-buffer): do not put the
buffer at the front of the list of recently selected ones.
Add a field property on the function `twittering-render-a-field'.

* twittering-mode.el: Add a field property to a tweet on the
function `twittering-render-a-field'.
(twittering-make-common-properties): Do not add a field property.
(twittering-render-a-field): add a field property.
Follow the header conventions.
Thanks to Jonas Bernoulli who reported the nonfulfillment.

* twittering-mode.el: Follow the header conventions. Thanks to
Jonas Bernoulli who reported the nonfulfillment.
Expand a path before calling the function `alpaca-after-find-file'.

* twittering-mode.el: Expand a path before calling the function
`alpaca-after-find-file'.
(twittering-read-from-encrypted-file): expand FILE into a full
path. Since "alpaca.el" uses the `buffer-file-name' as the prefix
of the temporary file, it must be a full path.
`twittering-render-a-field' can render a tweet without a separator.

* twittering-mode.el: Add a new argument of the function
`twittering-render-a-field' for rendering a tweet without a
separator.
(twittering-render-a-field): add a new argument for rendering a
tweet without a separator.
Render the header and footer line.

* twittering-mode.el: Render the header and footer line.
(twittering-make-field-id-of-timeline-oldest-end): new function.
(twittering-make-field-id-of-timeline-latest-end): new function.
(twittering-field-id-is-timeline-oldest-end): new function.
(twittering-field-id-is-timeline-latest-end): new function.
(twittering-render-timeline): render the header and footer on
rendering the whole of the buffer. In that case, the function now
moves the cursor to the normal field not to the header nor
footer.
(twittering-mode-map): bind "G" to `twittering-goto-last-status'
instead of `end-of-buffer'.
(twittering-enter): update the timeline when the function is
invoked on the header or footer.
(twittering-goto-last-status): new function.
(twittering-get-last-status-head): new function.
(twittering-goto-first-normal-field): new function.
(twittering-goto-last-normal-field): new function.
(twittering-get-first-normal-field-head): new function.
(twittering-get-last-normal-field-head): new function.
(twittering-goto-next-status): move the cursor to the normal field
before instruction for updating the timeline.
(twittering-goto-previous-status): likewise.
Add variables for customizing the header and footer.

* twittering-mode.el: Add variables for customizing the header and
footer.
(twittering-timeline-header-face): new variable.
(twittering-timeline-footer-face): new variable.
(twittering-timeline-header): new variable.
(twittering-timeline-footer): new variable.
(twittering-render-timeline): render the header and footer
according to the customization variables.
(twittering-initialize-global-variables-if-necessary): initialize
the faces for the header and footer.
The variable `twittering-scroll-mode' is obsolete.

* twittering-mode.el: The current version of twittering-mode
always behaves as the previous version does on scroll-mode. The
variable `twittering-scroll-mode' is obsolete.
(twittering-scroll-mode): removed.
(twittering-mode-line-buffer-identification): ignore the obsolete
variable `twittering-scroll-mode'.
(twittering-render-timeline): remove expressions for restoring
positions on non-scroll-mode.
(twittering-mode-map): do not bind "s" to the function
`twittering-scroll-mode'.
(twittering-mode-setup): do not call `make-local-variable' for the
variable `twittering-scroll-mode'.
* test/test-twittering-mode.el: Remove tests related to the
scroll-mode.
Remove invalid timeline specs from the history after.

* twittering-mode.el: Remove invalid timeline specs from the
history after the failure of the retrieval.
(twittering-http-get-default-sentinel): remove the specified
timeline spec string from the history after it becomes clear that
the spec is invalid.
(twittering-remove-timeline-spec-string-from-history): new
function.
(twittering-get-managed-buffer): add the requested timeline spec
string to the history. It may be removed from the history after if
it is invalid.
Support ":exclude-if/FUNC/SPEC" timelines.

* twittering-mode.el: Support ":exclude-if/FUNC/SPEC" timelines.
(twittering-http-get-default-sentinel): remove timeline spec
strings depending the invalid spec.
(twittering-timeline-spec-to-string): support the new timeline
spec ":exclude-if/FUNC/SPEC".
(twittering-extract-timeline-spec): likewise.
(twittering-timeline-spec-composite-p): new function.
(twittering-timeline-spec-depending-on-p): new function.
(twittering-get-base-timeline-specs): new function.
(twittering-get-primary-base-timeline-specs): new function.
(twittering-generate-composite-timeline): new function.
(twittering-current-timeline-referring-id-table): support the new
timeline spec ":exclude-if/FUNC/SPEC".
(twittering-current-timeline-data): likewise.
(twittering-add-statuses-to-timeline-data): update composite
timelines that depend on the primary timeline.
(twittering-get-and-render-timeline): add new arguments SPEC and
SPEC-STRING to retrieve timelines that have no buffers but
constitute some composite timelines.
* test/test-twittering-mode.el: Add tests for the timeline spec
":exclude-if/FUNC/SPEC".
Support merge timelines.

* twittering-mode.el: Support merge timelines.
(twittering-timeline-spec-composite-p): support the merge timeline
spec.
(twittering-get-base-timeline-specs): likewise.
(twittering-generate-composite-timeline): likewise.
(twittering-current-timeline-referring-id-table): likewise.
(twittering-current-timeline-data): likewise.
Delete a specified status from composite timeline buffers.

* twittering-mode.el: Delete a specified status from composite
timeline buffers.
(twittering-get-dependent-timeline-specs): new function.
(twittering-delete-status-from-data-table): delete the given
status from buffers bound to composite timelines.
Decode a HTTP response body before invoking a sentinel.

* twittering-mode.el: Decode a HTTP response body before invoking
a sentinel.
(twittering-decode-response-body): new function.
(twittering-send-http-request): decode the response body by
`twittering-decode-response-body' before invoking the sentinel.
(twittering-http-get-default-sentinel): do not decode the response
body here.
Delete a status after the response for the API is received.

* twittering-mode.el: Delete a status after the successful
response for the `destroy-status' API is received.
(twittering-http-post-destroy-status-sentinel): new function.
(twittering-call-api): use the new function
`twittering-http-post-destroy-status-sentinel' as the sentinel of
`twittering-http-post' for the command `destroy-status'.
(twittering-delete-status): do not delete the specified status
here.
`twittering-render-a-field' always moves the cursor.

* twittering-mode.el: `twittering-render-a-field' moves the
cursor even if the given status is not rendered.
(twittering-render-a-field): move the cursor even if the given
status is not rendered.