Kevin McCarthy [Sat, 2 Jul 2016 19:22:51 +0000 (12:22 -0700)]
Decouple the sidebar from the Buffy list.
Change the sidebar to use an array of SBENTRY* instead. Move the
"is_hidden" into SBENTRY. Remove the added "prev" pointer from BUFFY.
This way, sorting the sidebar doesn't affect the BUFFY list order, and
we don't need elements inside BUFFY just for the sidebar presentation.
Fix sidebar-next for the case where the mailboxes are unsorted and
$sidebar_new_mail_only is set. Change sorting not to clump hidden
mailboxes at the bottom, instead simply skip over hidden mailboxes in
sidebar-next/prev.
USE_SIDEBAR needed to be set in doc/makedoc-defs.h so that the sidebar
option documentation is generated whether mutt is configured with the
sidebar or not.
Remove $sidebar_refresh_time from Sample Sidebar Config
The $sidebar_refresh_time option was removed with the changeset 1f840760e6e0. Remove it from the sample sidebar configuration as well,
so that anyone using that file in its entirety won't have to deal with "unknown
variable" errors.
Kevin McCarthy [Thu, 23 Jun 2016 19:38:07 +0000 (12:38 -0700)]
Change sidebar to consistently use realpath for context and buffy comparison.
The original sidebar patch contained a half-implemented attempt to use
realpath() mailbox paths for comparison. (Presumably so the open mailbox
remains highlighted despite symlink issues).
Add realpath to the Context, and set it when opening a mailbox.
Remove sidebar ifdef for the buffy member, and always set it there too.
Change the sidebar to use the realpath for comparison everywhere.
mutt_buffy_check() is using stat device and inode for comparison.
Perhaps this can be changed to use realpath instead, but that's beyond
the scope of this patch.
Kevin McCarthy [Fri, 17 Jun 2016 17:30:30 +0000 (10:30 -0700)]
Combine the basic and extended buffy functions.
Add a check_stats parameter to the mbox, maildir, and mh buffy
functions. Use that parameter to determine whether to also count
total, new, and flagged messages.
This makes the functions a bit more complicated, but improves
efficiency (for maildir and mh).
Also includes the following cleanup/fixes:
* Move the orig-value counter reset to the beginnining of the loop,
(before tmp->new is set to 0).
* Change trashed maildir messages to not be counted in msg_count
* Remove an incorrect setting of mailbox->new based on msg_count in
maildir. (I missed this one for 1f840760e6e0)
* Change mbox to use the context->mtime for stats_last_checked,
removing a race condition.
* Fix mh to actually count the messages in order to generate msg_count.
mh_sequences only covers the range of messages with some sort of
flag.
Kevin McCarthy [Tue, 7 Jun 2016 22:02:58 +0000 (15:02 -0700)]
Make extended buffy independent of the sidebar.
Add new boolean option $mail_check_stats (default off) and
$mail_check_stats_interval. The first turns extended buffy on. The
second sets the amount of time in between extended buffy checks
(defaulting to 60 seconds).
Remove the option $sidebar_refresh_time.
Change mutt_buffy_check() to only notify the sidebar to redraw if a
mailbox buffy value changes.
Remove the #ifdefs around the extended buffy functions. The next
patch will merge these functions with the basic functions and pass a
parameter instead.
Imap is a special case, because it sends out the status in one batch.
Change this to perform the comparisons inside cmd_parse_status() and
flag the sidebar there. It was previously directly assigning the
status counters (unsigned int) to the buffy->new (short). Change this
to assign 1/0.
Kevin McCarthy [Wed, 8 Jun 2016 21:43:35 +0000 (14:43 -0700)]
Change the default for sidebar_format to use %n.
The next series of patches is going to create a new option,
$mail_check_stats defaulting off. When off, the extended buffy which
calculates total/new/flagged messages won't be run. To help reduce
"sidebar is broken" bug reports, this changes the default format to
something not requiring extended buffy.
The previous default is documented in the option and preserved in the
sample sidebar muttrc in contrib.
Kevin McCarthy [Sat, 4 Jun 2016 18:32:12 +0000 (11:32 -0700)]
Start to fix sidebar buffy modifications.
The extended buffy for mh had incorrect placement of the loop
brackets. The counters weren't being incremented in the loop.
Fix extended buffy for maildir to count a maildir message as new if it
doesn't have the info delimeter.
Remove shortcircuits added to the basic buffy stating there is new
mail when (msg_unread > 0). This is not necessarily true, depending
on $mail_check_recent.
Note: the extended buffy still needs more fixes, which will be done
when it is refactored into its own option.
Kevin McCarthy [Sat, 4 Jun 2016 18:32:09 +0000 (11:32 -0700)]
Various fixes to the sidebar logic.
Use strfcpy instead of strncpy. The current logic could write past
the end of the buffer.
Don't mess with BUFFY next pointers during removal. The
mutt_parse_mailboxes() is fine, but this is still not something that
should be done inside sidebar.c.
On removal, set next->prev since we can.
Fix unmailboxes logic:
* only fix the prev pointers once.
* if we unmailbox the open mailbox, set it to NULL.
Kevin McCarthy [Sat, 4 Jun 2016 18:32:07 +0000 (11:32 -0700)]
Clean up the sidebar manual.
Remove the introduction section. It's a nice effort, but reads more
like a tutorial than something that belongs in section 2. Will
probably put in on the website instead.
Remove references to a "patch", neomutt, and the history.
Richard Russon [Thu, 23 Jun 2016 14:57:32 +0000 (15:57 +0100)]
fix sidebar/mail_check painting problem
The bug was triggered when $mail_check was set to 0.
When drawing the status line, the Sidebar lied about its size to
workaround a bug in mutt_FormatString(). Whilst in that function the
Sidebar was redrawn.
The Sidebar got confused over whether it should be visible or not and
promptly vanished.
Kevin McCarthy [Mon, 6 Jun 2016 01:05:41 +0000 (18:05 -0700)]
Fix sidebar buffy stats updating on mailbox close.
Move the mutt_sb_set_buffystats() call from mx_fastclose_mailbox() to
the bottom of mx_close_mailbox(). Append-only mailboxes don't have
msgcount set, so fastclose was the wrong place to be doing these
updates.
Richard Russon [Thu, 9 Jun 2016 19:06:10 +0000 (12:06 -0700)]
Fix alignment in the compose menu.
Several of the compose-panel labels didn't use the TITLE_FMT to align
themselves. This causes formatting problems when the width is changed,
e.g. by the NNTP patch.
Richard Russon [Thu, 9 Jun 2016 13:01:42 +0000 (14:01 +0100)]
temporarily disable $sidebar_refresh_time
Limiting the refresh frequency of sidebar updates was interfering with
other Mutt behaviour. Upstream, Mutt is changing how refresh is
handled. I'll adopt those changes when they're finished.
Kevin McCarthy [Tue, 10 May 2016 16:42:27 +0000 (09:42 -0700)]
Set COLUMNS to MuttIndexWindow->cols in mutt_create_filter_fd. (closes #3837)
This allows filters to automatically (or via a command line argument)
adjust to the width of the pager/index. This is even more important
with the sidebar, since the width of the pager is smaller than the
terminal width.
Thanks to Vincent Lefèvre for his helpful information and suggestions,
and to Richard Russon for the initial patches.
Richard Russon [Sun, 1 May 2016 13:39:59 +0000 (14:39 +0100)]
merge: upstream
* Fix IDNA functions for systems without iconv.
* Fix mutt_protect() when INLINE is set. (closes #3828)
* Create a wrapper sys_socket.h to work around Solaris namespace issues. (closes #3833)
* automatic post-release commit for mutt-1.6.1
Kevin McCarthy [Wed, 27 Apr 2016 20:08:52 +0000 (13:08 -0700)]
Create a wrapper sys_socket.h to work around Solaris namespace issues. (closes #3833)
Solaris includes "sys/stream.h" inside their "sys/socket.h". This
include file adds many non-reserved macros to Mutt's namespace, two of
which conflict with existing Mutt macros.
The simplest fix would be to rename those macros in Mutt, however this
will cause difficulty with out-of-tree patches. This fix creates a
wrapper include file that preserves those existing macros and prevents
the Solaris values from entering Mutt's namespace.
Olaf Lessenich [Thu, 14 Apr 2016 22:23:28 +0000 (23:23 +0100)]
allow the user to change mailboxes again
"unmailboxes *" used to cause Sidebar to crash. The bug-fix for this
introduced another bug that prevented users from changing to a
non-Sidebar folder.
Kevin McCarthy [Sun, 10 Apr 2016 23:02:06 +0000 (16:02 -0700)]
Fix mutt_protect() when INLINE is set. (closes #3828)
The oppenc changes allow security bits to be set even when not
encrypting or signing (for instance, OPPENCRYPT and INLINE).
mutt_protect() assumed that if INLINE is set, then either ENCRYPT or
SIGN must also be set. Specifically, it would end up inline-signing
the message even though neither was set.
Ensure mutt_protect() is a noop if neither SIGN or ENCRYPT are set.
In ci_send_message(), check for sign or encrypt before calling the
crypt_get_keys() / mutt_protect() block, and also in the fcc section
(since clear_content would be NULL if not).
The second change to the fcc part is somewhat redundant, but better to
be explicit and avoid the case where the subtype is somehow
"encrypted" or "signed" even though msg->security wasn't set thus.
Kevin McCarthy [Tue, 5 Apr 2016 21:31:36 +0000 (14:31 -0700)]
Fix IDNA functions for systems without iconv.
The IDNA changes for SMTPUTF8 support introduced a bug for systems
without iconv. For those systems, the local<->intl functions would
return an error due to the charset conversion failing.
Change mutt_idna.c back to being conditionally compiled, but this time
based on HAVE_ICONV. If there is no iconv, stub out the functions in
mutt_idna.h.
Richard Russon [Wed, 2 Dec 2015 03:58:44 +0000 (03:58 +0000)]
build: conditional compilation
Make sidebar compilation conditional on a configure option.
Add --enable-sidebar option to configure
Alter Makefile to honour configure
Move our OPS into OPS.sidebar
Surround all our code with #ifdef USE_SIDEBAR
By using the unifdef program, all the sidebar code can be removed.
The result is code that differs only slightly from the original mutt
code. Run this on each source file:
Compared to the original mutt code, there are some minor changes,
such as whitespace, and minor refactoring of variables.
Note: One sidebar global variable is left-behind: SidebarWidth.
This is deeply embedded in the mutt code. This is because mutt
hard-codes a lot of values: 0's for the left-hand side of the
screen and COLS representing the width of the screen.
Richard Russon [Wed, 2 Dec 2015 03:58:15 +0000 (03:58 +0000)]
tidy: add comments
NOTE: this patch does NOT make any code changes.
It simply adds comment blocks.
Fully document all the sidebar config options.
Add comment-blocks describing each function -- what it does, the
parameters it takes, the return values. These can be used by
doxygen.
Richard Russon [Wed, 2 Dec 2015 03:03:49 +0000 (03:03 +0000)]
tidy: sidebar
Tidy up code in sidebar.c
Minor refactoring of code
Initialise variables
Check pointers before use
Bracket complicated logic
Add {} to unbalanced, or ambiguous, if's
Align = signs
Split up illegible uses of ternary operator ? :
Split up: if ((x = y()) == NULL)
Remove perl-like one-line if's
Compare pointers to NULL
Move our private data struct (sidebar_entry) from protos.h
Richard Russon [Mon, 30 Nov 2015 16:37:36 +0000 (16:37 +0000)]
fix: drop DrawFullLine
Drop global variable DrawFullLine
sidebar used a global variable in order to occasionally draw a
complete line of text on the screen. By manipulating the
SidebarWidth, we can produce the same effect.
Removing this variable also removes the need for nearly 50 lines of
duplicated code in mutt_FormatString.
Richard Russon [Tue, 1 Dec 2015 04:14:25 +0000 (04:14 +0000)]
fix: drop unused
NOTE: this patch does NOT make any functional changes.
remove unused parameters from:
draw_sidebar
scroll_sidebar
calc_boundaries
draw_sidebar has a return value that isn't used
struct MBOX_LIST isn't used
remove some unneeded #include's
remove defunct #ifdef BUFFY_SIZE
remove junk comments
Richard Russon [Tue, 24 Nov 2015 16:27:20 +0000 (16:27 +0000)]
feature: working utf8
Correctly handle utf8 character sequences.
Fix the distinction, in the code, between buffer length in bytes,
string length in wide-chars and screen width in cells.
Steve Kemp [Thu, 19 Nov 2015 18:29:49 +0000 (18:29 +0000)]
feature: new only
Add new config: "sidebar_newmail_only"
Only display mailboxes containing new mail.
Add two new functions and keyboard mappings.
"sidebar-next-new" / "sidebar-prev-new" select the next/previous
mailbox that contains new, or flagged, mail.