function local to thread local;
- fixed 'line-oriented-widget:append-new-rows'; uses slots instead of
accessors as, for example, message window skips invisible lines
when specialzed (on message-window) method 'rows' is called.
when follownig a redirect both the original (the redirect) and the
actual URI was saved in the history. So if an user, after followed a
redirect, tried to go back would reach the same redirect, this generated
a loop.
i got rid of slot support-text in message-window, so that class does
not maintain a state.
- changed behaivour of split-line
(split-line (format nil "~2%")) ; => ("" "")
That is an emtpy line is returned as empty string and not skipped
Thanks to people from IRC and cl-ppcre maintainer for help!
- [breaking changes] changed 'hooks:*before-prepare-for-rendering-message*
with 'hooks:*before-rendering-message-text*.
This function called cl-ppcre:create-scanner but if the argument to
this function can not be interpreted as a valid regex (e.g "["), an
error is signalled.
This error is now captured and the string passed to 'create-scanner'
is used as a mere sequence not a regular expression.
- [gemini] fixed bug that prevented a page to be reloaded;
- [gemini] use cache, if possible, when opening a gemini url.
line-based one.
The old method that packed text got from gemini stream in single event
was ugly and blocked the UI.
This version revert to a line by line rendering but it is optimized
and does not gets slow with the size of the text the window holds.
- added some messages to debug protocol;
- asking for query event got minimum priority to prevent being
hidden by informational messages on the command line (e.g the
message that inform the user that the client is going back in
history);
- always stream contents that are repsonses to a query;
- added gemini-client:request-dispatch and rewritten
gemini-client:slurp-gemini-url based on the former.
the implementation more or less follow
gemini://mozz.us/files/rfc_gemini_favicon.gmi but it does render the
first character of the file instead of checking for emoji
characters.
certificate/key pair.
The function to find a cached certificate/key or create a new pair
retuns a multiple value.
I was using multiple-value-list for getting the pairs certificate/key
from said functions. Then i was checking the results of
'multiple-value-list' for null values to get the non correct pair, but
that expression never return nil (was returning '(nil) instead).
This was breaking the client autentication.
the same time;
- [gemini] add a newline to data before parsing a gemini file only
when needed (thre is no one at the end);
- commented and improved some regular expressions for coloring.
Starting wrapping streaming of gemini's data using hi level
structures (this way we can associate a for aecha stream), this
could be useful to let the user start or stop the stream or open the
data downloaded so far.
way (in a different thread)
- [gemini] prevent links to be appended even when user is opening a new document;
- [gemini] added a notification when download of a gemini document has terminated.
thread) the contents of a gemini file parsed so far without waiting
for the whole document to be read from the socket.
This feature should prevent blocking the client when the server
never close the socket (i.e. for streamed contents).