Unfortunately this breaks compatibility with existing guile scripts, but this
change is needed to keep consistency with other scripting languages.
Now guile >= 2.0 is required, WeeChat can not compile any more with guile 1.8.
The nick changes are tracked and will be unmasked with the join.
Events triggering the unmask of join are: a message (can be CTCP), a notice or
an update of topic.
This was causing a bug in relay plugin (weechat protocol): when a buffer was
closed, local variables were removed after buffer name, and when signal is sent
to client, the buffer name was wrong (already freed).
Fix:
- use proper arguments in commands sync/desync (use argv[0] instead of argv[1])
- when searching if a buffer is synchronized, its name has higher priority on "*"
(so first check if buffer is synchronized, and if not found, search if "*" is
synchronized)
- when receiving a "nicklist_*" signal, check if the buffer is synchronized with
flag "RELAY_WEECHAT_PROTOCOL_SYNC_NICKLIST"
Two hashtables have been added to store the spellers currently used (in all
buffers) and info for each buffer: array with pointers to spellers and state of
aspell for this buffer.
Therefore the spellers are not destroyed and created again on each buffer switch,
or each time screen is refreshed when window is split.
A size of 32 will use a little more memory but will reduce collisions in key
hashs, and then length of linked lists inside hash structure (faster search in
hashtable).
Error number and string is now displayed when an error is returned by one of
these functions: socket, setsockopt, fcntl, pipe, accept, bind, listen, mkfifo.
Argument "*" is now silently ignored in command /window.
When item "buffer_nicklist" is in a root bar, we use current window/buffer to
find which nick has been clicked (same behaviour as callback used to display bar
item "buffer_nicklist").
This can happen when a window becomes too small for display: then we set the
ncurses chat window to NULL.
So when displaying buffer, we'll skip it if the ncurses chat window is NULL.
Steps to reproduce crash:
1. /window splith
2. /window resize -1 (many times, until chat area is less than one line)
3. /window balance
The bug happened when two buffers have different number of dictionaries and start
with same dictionaries. For example buffer #1 with [en,fr] and buffer #2 with [en].
When switching from buffer #1 to buffer #2, aspell does not use only [en], but [en,fr].