Giter Club home page Giter Club logo

neomutt's Introduction

This is the NeoMutt Project

Stars Twitter Contributors Release License: GPL v2 Code build Coverity Scan Website build

What is NeoMutt?

  • NeoMutt is a project of projects.
  • A place to gather all the patches against Mutt.
  • A place for all the developers to gather.

Hopefully this will build the community and reduce duplicated effort.

NeoMutt was created when Richard Russon (@FlatCap) took all the old Mutt patches, sorted through them, fixed them up and documented them.

What Features does NeoMutt have?

Name Description
Account Command Populate account credentials via an external command
Attach Headers Color Color attachment headers using regex, just like mail bodies
Command-line Crypto (-C) Enable message security in modes that by default don't enable it
Compose to Sender Send new mail to the sender of the current mail
Compressed Folders Read from/write to compressed mailboxes
Conditional Dates Use rules to choose date format
Custom Mailbox Tags Implements Notmuch tags and Imap keywords
Encrypt-to-Self Save a self-encrypted copy of emails
Fmemopen Replace some temporary files with memory buffers
Forgotten Attachment Alert user when (s)he forgets to attach a file to an outgoing email.
Global Hooks Define actions to run globally within NeoMutt
Header Cache Compression Options for compressing the header cache files
Ifdef Conditional config options
Index Color Custom rules for theming the email index
Initials Expando Expando for author's initials
Kyoto Cabinet Kyoto Cabinet backend for the header cache
Limit Current Thread Focus on one Email Thread
LMDB LMDB backend for the header cache
Multiple FCC Save multiple copies of outgoing mail
Nested If Allow complex nested conditions in format strings
New Mail Execute a command upon the receipt of new mail.
NNTP Talk to a Usenet news server
Notmuch Email search engine
Pager Read Delay Delay when the pager marks a previewed message as read
Progress Bar Show a visual progress bar on slow operations
Quasi-Delete Mark emails that should be hidden, but not deleted
Reply With X-Original-To Direct reply to email using X-Original-To header
Sensible Browser Make the file browser behave
Sidebar Panel containing list of Mailboxes
Skip Quoted Leave some context visible
Status Color Custom rules for theming the status bar
TLS-SNI Negotiate with a server for a TLS/SSL certificate
Trash Folder Automatically move deleted emails to a trash bin
Use Threads Improve the experience with viewing threads in the index

Contributed Scripts and Config

Name Description
Header Cache Benchmark Script to test the speed of the header cache
Keybase Keybase Integration
Useful programs List of useful programs interacting with NeoMutt
Vi Keys Easy and clean Vi-keys for NeoMutt
Vim Syntax Vim Syntax File

How to Install NeoMutt?

NeoMutt may be packaged for your distribution, and otherwise it can be built from source. Please refer to the instructions on the distro page.

Where is NeoMutt?

Copyright

NeoMutt is released under the GPL v2+ (GNU General Public License). See LICENSE.md.

The principal authors of NeoMutt are:

neomutt's People

Contributors

aradici avatar austin-ray avatar bcully avatar d-k-c avatar dcpurton avatar ebblake avatar fekir avatar flatcap avatar floand avatar gahr avatar ivilata avatar jakkinstewart avatar jindraj avatar kbcb avatar kdave avatar kevin8t8 avatar l2dy avatar mandree avatar matthewhughes934 avatar mgedmin avatar microe avatar mjsir911 avatar nabijaczleweli avatar ngortheone avatar rayfordshire avatar reneclerc avatar roccoblues avatar sileht avatar strahinja avatar whitney-cumber avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

neomutt's Issues

Cannot compile with notmuch enabled and sidebar disabled

It fails with:

browser.c: In function ‘examine_vfolders’:
browser.c:529:42: error: ‘BUFFY {aka struct buffy_t}’ has no member named ‘msg_count’
       nm_nonctx_get_count(tmp->path, &tmp->msg_count, &tmp->msg_unread);
                                          ^
browser.c:529:59: error: ‘BUFFY {aka struct buffy_t}’ has no member named ‘msg_unread’
       nm_nonctx_get_count(tmp->path, &tmp->msg_count, &tmp->msg_unread);
                                                           ^
browser.c:531:12: error: ‘BUFFY {aka struct buffy_t}’ has no member named ‘msg_unread’
         tmp->msg_unread, tmp->msg_count);
            ^
browser.c:531:29: error: ‘BUFFY {aka struct buffy_t}’ has no member named ‘msg_count’
         tmp->msg_unread, tmp->msg_count);
                             ^
buffy.c: In function ‘buffy_check’:
buffy.c:668:5: error: ‘BUFFY {aka struct buffy_t}’ has no member named ‘msg_count’
  tmp->msg_count = 0;
     ^
buffy.c:669:5: error: ‘BUFFY {aka struct buffy_t}’ has no member named ‘msg_unread’
  tmp->msg_unread = 0;
     ^
buffy.c:670:5: error: ‘BUFFY {aka struct buffy_t}’ has no member named ‘msg_flagged’
  tmp->msg_flagged = 0;
     ^
buffy.c:671:37: error: ‘BUFFY {aka struct buffy_t}’ has no member named ‘msg_count’
  nm_nonctx_get_count(tmp->path, &tmp->msg_count, &tmp->msg_unread);
                                     ^
buffy.c:671:54: error: ‘BUFFY {aka struct buffy_t}’ has no member named ‘msg_unread’
  nm_nonctx_get_count(tmp->path, &tmp->msg_count, &tmp->msg_unread);
                                                      ^
buffy.c:672:9: error: ‘BUFFY {aka struct buffy_t}’ has no member named ‘msg_unread’
  if (tmp->msg_unread > 0) {
         ^
buffy.c:676:2: warning: implicit declaration of function ‘sb_set_update_time’ [-Wimplicit-function-declaration]
  sb_set_update_time();
  ^
browser.c: In function ‘_mutt_select_file’:
browser.c:737:2: warning: ignoring return value of ‘getcwd’, declared with attribute warn_unused_result [-Wunused-result]
  getcwd (LastDir, sizeof (LastDir));
  ^
browser.c:747:2: warning: ignoring return value of ‘getcwd’, declared with attribute warn_unused_result [-Wunused-result]
  getcwd (LastDir, sizeof (LastDir));
  ^
browser.c:766:7: warning: ignoring return value of ‘getcwd’, declared with attribute warn_unused_result [-Wunused-result]
       getcwd (LastDir, sizeof (LastDir));
       ^
browser.c:785:9: warning: ignoring return value of ‘getcwd’, declared with attribute warn_unused_result [-Wunused-result]
         getcwd (LastDir, sizeof (LastDir));
         ^
Makefile:853: recipe for target 'buffy.o' failed
make[2]: *** [buffy.o] Error 1
make[2]: *** Waiting for unfinished jobs....
Makefile:853: recipe for target 'browser.o' failed
make[2]: *** [browser.o] Error 1
mv -f .deps/alias.Tpo .deps/alias.Po
mv -f .deps/attach.Tpo .deps/attach.Po
make[2]: Leaving directory '/tmp/makepkg-steb/neomutt/src/neomutt'
Makefile:887: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/tmp/makepkg-steb/neomutt/src/neomutt'
Makefile:559: recipe for target 'all' failed
make: *** [all] Error 2
==> ERROR: A failure occurred in build().
    Aborting...

Sidebar: settings no longer work

I upgraded my mutt to 1.6.0 today, using the Gentoo ebuild which provides the neomutt patches. It seems like sidebar related settings are changed, removed, or...? But the docs don't seem to reflect this. Mutt barfed these messages upon startup, these did work on the previous version I used, 1.5.24-r2.

sidebar-next: no such function in map
sidebar-open: no such function in map
sidebar-prev: no such function in map
sidebar_delim: unknown variable
sidebar_delim_chars: unknown variable
sidebar_indentstr: unknown variable
sidebar_new: no such object
sidebar_shortpath: unknown variable
sidebar_sort: unknown variable
sidebar_width: unknown variable

keywords.patch: yet an other crash

...
(gdb) bt
#0 0x00005555555a2363 in mutt_label_ref_dec (env=) at headers.c:227
#1 0x00005555555e0f06 in mutt_free_envelope (p=p@entry=0x7fffffff5f38) at muttlib.c:744
#2 0x0000555555575ee3 in test_last_status_new (f=0x555555955dd0) at buffy.c:121
#3 test_new_folder (path=) at buffy.c:140
#4 mutt_parse_mailboxes (path=0x7fffffff9200, s=0x7fffffff9140, data=1, err=)

at buffy.c:313

#5 0x0000555555596c38 in mutt_parse_rc_line (line=,

token=token@entry=0x7fffffff9200, err=err@entry=0x7fffffff9260) at init.c:2481

#6 0x0000555555596dcd in mutt_parse_rc_line (err=0x7fffffff9260, token=0x7fffffff9200,

line=<optimized out>) at init.c:2457

#7 source_rc (rcfile=0x55555587db30 "/home/manfred/.muttrc.edited",

err=err@entry=0x7fffffff9260) at init.c:2389

#8 0x0000555555599f9b in mutt_init (skip_sys_rc=0, commands=0x0) at init.c:3467
#9 0x000055555556cc8c in main (argc=1, argv=0x7fffffffd908) at main.c:423

(gdb) l
222
223 for (label = env->labels; label; label = label->next)
224 {
225 if (label->data == NULL)
226 continue;
227 count = (uintptr_t)hash_find(Labels, label->data);
228 if (count)
229 {
230 hash_delete(Labels, label->data, NULL, NULL);
231 count--;
(gdb) p label
$1 = (LIST *) 0x5555559533b0
(gdb) p label->data
$2 = 0x555555953430 "rhel_extras"
(gdb) p Labels
$3 = (HASH *) 0x0
(gdb) p count
$4 =
...

Master is extremely laggy

Just updated to master and neomutt is unusable. Any kind of cursor motion takes around 1 second to complete.

fuzzy address lookup

to get something close what i'm trying to explain here please try the following.

set query_command = "notmuch-addrlookup --mutt %s |fzf"

you will need: notmuch-addrlookup and fzf
of course.

List of maildirs with new mail not working

I use a mutt+offlineimap setup. With neomutt, when I press "." on the index, which is mapped to buffy-list, it does not yield any result, even if there is new mail in other folders. There was no problem in mutt and mutt-kz.

I observed that in both situations :

  • incoming mail has been just fetched (I have not yet entered the folder)
  • if I had previously entered the folder and closed neomutt (so that new mail could be considered as "seen" or "old").

Relevant part of my .muttrc:

mailboxes `find ~/Mail/RFS/* -maxdepth 0 -type d | grep -v "tmp\|new\|cur" |xargs`
mailboxes `find ~/Mail/CNAMnet/* -maxdepth 0 -type d | grep -v "tmp\|new\|cur\|Spam" |xargs`

Perhaps related to #19 ?

Clean up configure script

Taking a look at the build system, I saw lots of issues with the configure.ac script that can be cleaned up.

  1. The various configure options often use the wrong terminology. --enable options should enable features in the codebase while --with options should enable support using 3rd party libraries. Hence, it should be --with-gpgme and --with-pgp.
  2. There is no need to test for x$enableval = yes in the AC_ARG_ENABLE macros. In the 3rd argument, you can simply set the variable to the value of $enableval. Take a look at this configure script for ideas: https://github.com/rockdaboot/wget2/blob/master/configure.ac
    Tim has spent considerable time making sure the configure.ac script is perfect and we've had enough long discussions about the entire autotools tree.
  3. We can have configure print a summary of build options at the end. This is often useful debug information, especially for devs. Again, take a look at the above cofngure script for what it does.

I don't mind working on these points, but I'll do it only after discussion and if I know that the patches will be accepted. It would be nice to upstream these some of these patches as well for the cases where they are similar.

sidebar breaks reflow_text

With the sidebar open, reflow_text set and the pager's current width less than reflow_wrap, mutt will not correctly wrap format=flowed text. The calculations simply ignore the width of the sidebar and instead use the total width of the terminal while the pager's actual width should be used.

neomutt-patches-20160502 doesn't apply cleanly over mutt-1.6.1

This does not work:

$ wget https://github.com/neomutt/neomutt/releases/download/neomutt-20160502/neomutt-patches-20160502.tar.gz
$ wget ftp://ftp.mutt.org/pub/mutt/mutt-1.6.1.tar.gz
$ tar -xzf mutt-1.6.1.tar.gz
$ tar -xzf neomutt-patches-20160502.tar.gz
$ cd mutt-1.6.1/
$ QUILT_PATCHES=../neomutt-patches-20160502 quilt --quiltrc /dev/null push -a

Patch 02-04 apply with offset and sometimes fuzz, patch 05 ultimately fails.

Sidebar redraw leaves cursor in the wrong place

When Mutt asks you to enter some information, e.g. mail subject, the Sidebar can refresh itself.
When it's done redrawing, the cursor is left in the wrong place (at the bottom of the divider) instead of the command bar (where you're typing).

mutt_draw_statusline() causes some characters to display incorrectly

This is my first time writing up an issue (for any github project). I looked around for some kind of new issue guidelines, but didn't find any (let me know if anything is missing...).

To the point, I occasionally send/receive email in Chinese, and would like to be able to display Chinese characters in the statusbar (or any other bar really). I noticed that when migrating from mutt 1.6.1 to neomutt 1.6.1, my statusbar in the mutt pager was all garbled. For reference, here was the config:

set pager_format = " %C - %[%H:%M] %20v %s %?H? [%H] ?"

Strangely enough, reading this line from the source file was problematic, but typing it in at the command line gave the expected output. Since the configuration file was utf-8 encoded, I suspected other non-ascii characters would also cause problems. I tried typing in the following at the mutt command line:

set pager_format = " 测试 %C - %[%H:%M] %20v %s %?H? [%H] ?"

and found that only the Chinese characters were garbled. Eventually, I discovered in mutt 1.6.1 and neomutt 1.6.1 the function to draw the status bar had changed from mutt_paddstr() to mutt_draw_statusline(). When I replaced the new function with the old one, everything printed out as expected. For reference, in my version of neomutt cloned a few days ago, there was a call to mutt_draw_statusline() in pager.c at lines 1859 and 1865.

I haven't looked too deeply into what mutt_draw_statusline() is doing, but at first glance, it seems to be calling mutt_format_string() to draw the text. From what I can tell, mutt_format_string() calls mbrtowc() so it should be able to handle multibyte characters...

Here is a screenshot of reading this statusline " 测试 %C - %[%H:%M] %20v %s %?H? [%H] ?" from my config. file:

example

The wiki isn't enabled

The project's README mentions the wiki twice, but it isn't enabled on this project.
One of those needs to be fixed :]

sidebar_divider_char.. multiple chars?

Before mutt 1.6, I used to have this setting set as two characters of which the last was a space, it just adds a little margin. But when I do this now, the first character of the lines in emails are chopped off. Is there any chance to make this possible again? (I had it set to , but now it has to be a single char. It was just more aesthetically pleasing, now it looks a bit too crammed up.)

Debian Packages available

Hi all,

I am pleased to announce the availability of neomutt packages for
Debian. Hints for installation you'll find at [1].

I've packaged neomutt for Debian. A Debian ITP [2] is filed. The
binaries are build in a sid environment. The sources are fetched
from neomutt branch. I'll update packages as needed. Please test
the packages and let me know of any further glitches you find. If
you want, you can open an issue here. The Debian Bug Tracking
System is not involved as the package isn't uploaded yet, but will
be soon.

Thanks in advance for your cooperation

Elimar

[1] http://www.lxtec.de/debarchiv
[2] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=825821

The path to source is always uphill!
-unknown-

Patch Tree Proposal

Proposal for Mutt Patch Sets

  • NeoMutt maintains many patches
  • Each distro has its own requirements
  • Arranging the patches will reduce the integration work for everyone

patch-tree

Key:

  • Red - Clean source from the Mutt project
  • White - NeoMutt-maintained patch
  • Yellow - Distro with its own patches
  • Green - Distro using only NeoMutt patches

Notes

  • Some of the NeoMutt patches aren't ready yet: NNTP, Compress, Keywords
  • Though shown above, Gentoo will have its own tree, based on Mutt-1.6.1 + Window improvements

Bug Fixes

The "bug-fixes" patch, will start empty. It will accumulate fixes that all distros want. Once a fix is here, an issue will be raised on the Mutt bug tracker.

Distro Patches

Most distros have their own set of patches, unique to them. They will be rebased and applied after the NeoMutt patches. Once the main patch sets are stable, we can start sharing the distro patches.

Arch User Repository

@shioyama @darnir @tsuflux
Hello Arch Users,

As there's now a crowd of you, I thought I'd create you an ideas area.
Let me know if you need anything from me.

Here are a few ideas to get you started.


Arch user rhinoceros suggested editing the wiki: https://wiki.archlinux.org/index.php/Mutt
This would be a simple way to inform new users and direct them to our packages. It would need:

  • A simple description of NeoMutt
  • Why they should use it
  • Document the compile options
  • Instructions on how to build/install it
  • Links to NeoMutt website / GitHub

Lots of the text could be cut'n'pasted from the NeoMutt Website.


There are a lot of patched versions of Mutt in the AUR.
How can we benefit from the work?
How can we reduce the confusion?

  • Search for patches that NeoMutt doesn't have
  • Search for addons (contrib) that NeoMutt could use
  • Get maintainers to abandon their old projects and flag them out-of-date
  • Add comments to old projects to direct users to NeoMutt

Can old packages be deleted?


Drop the versioned neomutt AUR package in favour of neomutt-git

  • The users aren't going to know which one to choose
  • There shouldn't be any difference between them
  • neomutt-git is less effort to maintain

If I make a small change to my workflow, then every GitHub commit to would be a release.


A couple of packages could be copied in NeoMutt by simply changing the build config:

How easy is it to offer a few presets in the config?


What are your thoughts?

Sidebar interferes with new messages detection

@bitstreamout (transferred to its own issue)

Feedback from a mutt user here:

New messages detection does not work in the current version of mutt on openSUSE Tumbleweed. As a long time mutt user I'm used to shuffle through the list of folders containing new/unread messages using the 'c' followed by 'space' key sequence. I narrowed it down to the configure option "--enable-sidebar", which enables some pseudo graphical functionality for - I guess - mutt newbies. Rebuilding the otherwise unchanged package with "--disable-sidebar" produces a normally working mutt again.

I strongly recommend to disable this code until it gets fixed. Thx.

maybe I should disable the NeoMutt port of this patch and use the former, ported upstream as this had never this side effect.

For the user's bug report see http://bugzilla.opensuse.org/show_bug.cgi?id=982129

index view misalignment when compiled with sidebar support (neomutt-20160611)

Mutt 1.6.1 (2016-06-11, Gentoo 1.6.1-r2, NeoMutt 3d90396616d009a7dcbfbb17d8a74b3eee70bd9a)

The index doesn't use the full terminal width when sidebar support is compiled in, e.g.:

08-Jun   l Alexander Berntsen    +Facilitating user contributed ebuilds (Was[97]
Thu-09   l Michael Palimaka       Last rites: app-i18n/xsim               (2,4K)
Thu-09   l Michael Palimaka       Last rites: media-gfx/wings             (2,4K)
Thu-09   l Michael Palimaka       Last rites: media-gfx/fbv               (2,5K)
Thu-09   l Michael Palimaka       Last rites: sys-apps/dmtcp              (2,4K)
Thu-09   l Michael Palimaka       [PATCH] cmake-utils.eclass: do not pass(3,0K) 
Sat-11   l Benda Xu              +RFC: kernel-2.eclass Prefix support       [14]
Sat-11   l Pacho Ramos            Packages up for grabs                   (2,4K)
Sun-12  sl Andrew Savchenko       ├─>                                     (3,6K)
Sun-12   l Michał Górny           ├─>                                     (2,4K)
Sun-12  sl Andrew Savchenko       │ └─>                                   (3,8K)
Sun-12  sl Craig Inches           ├─>                                     (5,9K)
Sun-12  sl Mike Frysinger         │ └─>                                   (3,2K)
Sun-12  sl M. J. Everitt          │   └─>                                 (4,7K)
Mon-13   l Alexander Berntsen     └─>                                     (3,4K)
Sun-12   l Pacho Ramos            Lastrites: app-cdr/dvd95, app-portage/e(4,0K) 
Mon-13   l Robin H. Johnson       Automated Package Removal and Addition (8,8K) 
Tue-14   l Ashish Gupta           Re: Packages up for grabs               (3,6K)

Weird drawing artifacts appear when scrolling through an expanded thread, the top of visible message of the thread appears to be one char short, however when scrolling up, it's aligned properly.
When compiling mutt --without-sidebar this misalignment doesn't happen, so it's something related to the sidebar code path. Toggling the visibility of sidebar doesn't fix this misalignment.
Relevant config:

set index_format = "%<[12m?%<[7d?%<[12H?%[%H:%M ]&%[%a-%d]>&%[%d-%b]>&%[%b-%y]> %Z %-21.21F %?M?+& ?%s %* %?M?[%M]&(%c)?"

Compressed Folder Patch

Running release 20160530 with +USE_COMPRESSED. If i source the contributed muttrc.compress I get:

Error in /home/users/riesebie/.neomutt/muttrc.compress, line 14: badly formatted command string
The same for every hook.

If I source the same file with i.e. Debian's mutt-patched I can open compressed folders well.

Sidebar and DB_ENV problems

Hi, I'm building neomutt on Debian with : ./configure --program-prefix=neo --enable-sidebar --enable-notmuch --enable-compressed --enable-pop --enable-imap --enable-smtp --enable-exact-address --enable-hcache --enable-quick-build --disable-full-doc --enable-locales-fix

At first run, I get "sidebar_delim: unknown variable" (which is not much a problem)
But also : "DB_ENV->rep_set_request: Invalid min or max values" which I can't see where it can come from

The display is almost broken, first message appears as a ghost on first line, and navigating between lines makes everything "move" in a strange way

Thanks

Raphaël

Rolling Releases (bleeding edge)

@grobian (Gentoo), @shioyama (Arch), @alexpearce (Homebrew/OSX)

Rolling releases would mean you could get hot-fixes, test the latest features, etc

  • How would you like it to work?
  • What would you need from me?
  • Would you like the [devel/*] features included?
  • How should we name it?

NeoMutt Release 2016-06-11

I'm planning to make a new release of NeoMutt on 2016-06-11 (Saturday).

This will be a Bug-Fix Release.

This will resolve:

  • Several bugs in Keywords
  • A bug that prevents Compress from working
  • A potential crash in Sidebar

More bugs will be fixed before the release.

All comments and questions, about this release, are welcome here.
If you find a bug, please raise an issue.

Folders periodically switching places in sidebar

Firstly: this repo is a wonderful effort, thank you for your hard work! My apologies that my first interaction is reporting a problem.

I've modified the Homebrew formula for mutt to use neomutt, adding the --enable-sidebar flag to the call to ./prepare. The build succeeds, but when I start mutt the first and last folders in the sidebar switch periodically:

Folder switching

The periodicity seems to take the value of timeout, which is set to 3 in my muttrc.

I thought the sidebar might be trying to sort the folders by itself, rather than the order defined in the mailboxes setting, but setting sidebar_sort_method = "unsorted" doesn't change the behaviour (as expected, really, as the README says that “Unsorted isn't” is a known bug).

I usually define my mailboxes by using tree and sed to scan my Maildir for folders, manually inserting +gmail/INBOX before this scan so that it appears at the top of my folder list. For the purposes of debugging this problem, I just define them by hand:

mailboxes \
  "+gmail/INBOX" \
  "+gmail/archive" \
  "+gmail/Family" \
  ...

If I have only the following mailboxes defined, no folder switching occurs:

mailboxes \
  "+gmail/INBOX" \
  "+gmail/archive" \
  "+gmail/FIFO" \
  "+gmail/Family" \
  "+gmail/GitHub" \
  "+gmail/House"

If I add one extra folder, the switching occurs:

mailboxes \
  "+gmail/INBOX" \
  "+gmail/archive" \
  "+gmail/FIFO" \
  "+gmail/Family" \
  "+gmail/GitHub" \
  "+gmail/House" \
  "+gmail/L"

But now it's INBOX and Family that switch, not the first and last folders! 😄

My only thought is that "L" follows "I" alphabetically, so maybe that somehow triggers the switching. It I move INBOX to come just before L, I still see switching, but now it's archive and GitHub that switch (so still the same indices). So, it's probably not that.

What could be causing this behaviour?

sidebar.c:806:9: warning: unused variable ‘w’ [-Wunused-variable]

(I don't know what's the best place where to commit this, hence this way)

sidebar.c: In function ‘mutt_sb_draw’:
sidebar.c:806:9: warning: unused variable ‘w’ [-Wunused-variable]

--- sidebar.c.orig      2016-06-15 21:00:01.534249442 +0200
+++ sidebar.c   2016-06-15 21:00:09.918839530 +0200
@@ -803,7 +803,6 @@

   if (!get_incoming())
   {
-    int w = MIN(COLS, (SidebarWidth - div_width));
     fill_empty_space (0, num_rows, div_width, num_cols - div_width);
     return;
   }

Debian's patches

First of, let me say thank you so much for neomutt. I've been disappointed by the state of mutt for many years now and I find this project to be very refreshing to see and very much appreciated.

As you may probably be aware, Debian, like most downstreams, carries a lot of patches on top of mutt. In Debian's case, a few of them (like the sidebar and a few others) are distributed separately as a "mutt-patched" binary package, generated from the same source. The "stock" mutt package is also heavily patched; e.g. compressed folders is part of it (the line isn't very clear and I think it been based traditionally on stability merits). mutt-kz is also part of Debian, but it's generated from a separate source package and carries its own set of patches; I won't be focusing on that here.

Below you'll find the Debian patches, as can be found in pkg-mutt's git, split by their category, and with their status documented:

features

Patch neomutt equivalent
features/ifdef.patch 11-ifdef
features/trash-folder.patch 14-trash
features/purge-message.patch 14-trash
features/imap_fast_trash.patch 14-trash
features/sensible_browser_position.patch devel/sensible-browser
features/compressed-folders.patch devel/compress
features/compressed-folders.debian.patch (not needed)

misc

Patch neomutt equivalent
misc/am-maintainer-mode.patch (not needed)
misc/define-pgp_getkeys_command.patch (obsolete, not needed)
misc/gpg.rc-paths.patch applies cleanly
misc/smime.rc.patch applies cleanly

upstream

Patch neomutt equivalent Comments
upstream/528233-readonly-open.patch applies cleanly
upstream/228671-pipe-mime.patch applies cleanly
upstream/383769-score-match.patch applies cleanly
upstream/771125-CVE-2014-9116-jessie.patch applies cleanly
upstream/path_max.patch applies cleanly GNU Hurd compatibility
upstream/809802_timeout_hook.patch merge conflict Source: http://wolfermann.org/mutt.html

mutt-patched (only included in the "mutt-patched" binary package)

Patch neomutt equivalent Comments
mutt-patched/sidebar.patch 09-sidebar
mutt-patched/sidebar-delimnullwide.patch (not needed)
mutt-patched/multiple-fcc.patch merge conflict Source: https://www.mandarb.com/mutt/
mutt-patched/sidebar-newonly.patch 09-sidebar
mutt-patched/sidebar-compose.patch (not needed)
mutt-patched/nntp.patch devel/nntp

Debian-specific

Patch Rebase status
debian-specific/Muttrc.patch applies cleanly
debian-specific/Md.etc_mailname_gethostbyname.patch applies cleanly
debian-specific/use_usr_bin_editor.patch applies cleanly
debian-specific/correct_docdir_in_man_page.patch applies cleanly
debian-specific/dont_document_not_present_features.patch applies cleanly
debian-specific/document_debian_defaults.patch applies cleanly
debian-specific/assumed_charset-compat.patch applies cleanly
debian-specific/467432-write_bcc.patch applies cleanly
debian-specific/566076-build_doc_adjustments.patch applies cleanly

Legend:

  • Prefixed numbers are Debian bug reports and may provide more context. Use https://bugs.debian.org/NNNNNN to look those up.
  • "applies cleanly" and "merge conflict" means on top of stock neomutt 20160502.
  • "not needed" means the patch is either obsolete or wrong.
  • Debian-specific are… Debian-specific fixes :); all of these could be argued to all be in the "not needed" category.

I'm not part of the Debian mutt maintainer team (yet :), but I am a Debian Developer, familiar with how Debian works and was briefly in touch with the mutt maintainers earlier this week to discuss neomutt. My recommendation to them was to replace our mutt-patched package (and in the future, mutt-kz as well) straight with neomutt.

For this to happen, we'd need to forward-port all of the above patches that have no neomutt equivalent — and in the case of sensible-browser, compressed folders and NNTP, possibly replace them with your own cleaned-up versions from the devel/ branches. The only ones that don't seem to be applying cleanly so far are the multiple FCC and timeout-hook ones. Hopefully these can found their way to neomutt?

Ideally, now that there is a responsive upstream, we wouldn't have to carry any upstream patches in the Debian package. I hope the above helps you get a few more patches on your radar so that we can avoid dealing with merge-conflicts ourselves and that others can benefit from these :)

Date parsing not compatible with BSD date

The make build calls the date command as of release 20160530 (issue #32):

  date=`head -n 1 $(top_srcdir)/ChangeLog.neomutt | LC_ALL=C cut -d ' ' -f 3-5` && \
  date=`date -d "$$date" "+%Y-%m-%d" &&  \
  # ...

Use of the -d flag is not compatible with BSD date, as found on OS X, and I can't see a similar flag that could be used in its place.

One alternative is to do the parsing in Python, which is cross-platform, assuming it's available.

$ date="May 23 2016"
$ python -c "from datetime import datetime as dt; print(dt.strptime('$date', '%B %d %Y').strftime('%Y-%m-%d'))"
2016-05-23

This is causing the current Homebrew build for 20160530 to fail, see neomutt/homebrew-neomutt#11.

notmuch search shows no results

Silly question, but how do I map / to open a query and then show the results for it in a vfolder? (changed to reflect more relevant question better)

Error on Initial run

Might be covered by Issue #39 but I thought I would bring it up. Installed via Homebrew on OS X (10.11.5) and got the following error:

/var/mail/[username]: No such file or directory (errno = 2)Segmentation fault: 11

Proposal for motto

Neomutt.org has the header:

The NeoMutt Project
“Bringing together all the Mutt Code”

I think this is better:

The Neomutt Project
"Teaching an old dog new tricks"

and then the original text in smaller font.

NeoMutt Release 2016-05-30

I'm planning to make a new release of NeoMutt on 2016-05-30 (Monday), based on Mutt-1.6.1.

The main changes are the new features (promoted from devel):

  • Compress -- Compressed / Encrypted mailbox support
  • Keywords -- Email labels/keywords/tagging
  • NNTP -- Talk to a Usenet news server

Each new release will come with the following patches:

  • mutt-1.5.24-separate -- Feature patches, each based on Mutt-1.5.24
  • mutt-1.5.24-series -- A patchset of all the NeoMutt features rooted at Mutt-1.5.24
  • mutt-1.6.1-separate -- Feature patches, each based on Mutt-1.6.1
  • mutt-1.6.1-series -- A patchset of all the NeoMutt features rooted at Mutt-1.6.1
  • distro -- Each distro's private patchset, rebased onto the NeoMutt patchset

Note: Bug-fixes have been, and will be, backported to Mutt-1.5.24, but new features will not.
Note: Distros: Debian, Fedora, FreeBSD, Gentoo, Suse
Note: Arch (AUR) and OSX (Homebrew) have no private patches.

Kevin McCarthy talked about releasing Mutt-1.6.2 because of an urgent bug-fix.
This will have to wait until after this release.

All comments and questions, about this release, are welcome here.
If you find any bugs, please raise an issue.

Compiling in Ubuntu 15.10 fails with sidebar enabled

When building neomutt in Ubuntu 15.10 with sidebar enabled compilation fails with the following error:

mv -f .deps/curs_lib.Tpo .deps/curs_lib.Po                                                                                                                                    [7/1912]
gcc -DPKGDATADIR=\"/usr/share/mutt\" -DSYSCONFDIR=\"/usr/etc\" -DBINDIR=\"/usr/bin\" -DMUTTLOCALEDIR=\"/usr/share/locale\" -DHAVE_CONFIG_H=1 -I.  -I. -I.   -Iintl -I/usr/include// -I
./intl  -Wall -pedantic -Wno-long-long -g -O2 -MT curs_main.o -MD -MP -MF .deps/curs_main.Tpo -c -o curs_main.o curs_main.c
curs_main.c: In function ‘mutt_index_menu’:
curs_main.c:1513:12: error: ‘OP_SIDEBAR_OPEN’ undeclared (first use in this function)
       case OP_SIDEBAR_OPEN:
            ^
curs_main.c:1513:12: note: each undeclared identifier is reported only once for each function it appears in
curs_main.c:2656:12: error: ‘OP_SIDEBAR_NEXT’ undeclared (first use in this function)
       case OP_SIDEBAR_NEXT:
            ^
curs_main.c:2657:12: error: ‘OP_SIDEBAR_NEXT_NEW’ undeclared (first use in this function)
       case OP_SIDEBAR_NEXT_NEW:
            ^
curs_main.c:2658:12: error: ‘OP_SIDEBAR_PAGE_DOWN’ undeclared (first use in this function)
       case OP_SIDEBAR_PAGE_DOWN:
            ^
curs_main.c:2659:12: error: ‘OP_SIDEBAR_PAGE_UP’ undeclared (first use in this function)
       case OP_SIDEBAR_PAGE_UP:
            ^
curs_main.c:2660:12: error: ‘OP_SIDEBAR_PREV’ undeclared (first use in this function)
       case OP_SIDEBAR_PREV:
            ^
curs_main.c:2661:12: error: ‘OP_SIDEBAR_PREV_NEW’ undeclared (first use in this function)
       case OP_SIDEBAR_PREV_NEW:
            ^
curs_main.c:2665:12: error: ‘OP_SIDEBAR_TOGGLE_VISIBLE’ undeclared (first use in this function)
       case OP_SIDEBAR_TOGGLE_VISIBLE:
            ^
curs_main.c:2670:12: error: ‘OP_SIDEBAR_TOGGLE_VIRTUAL’ undeclared (first use in this function)
       case OP_SIDEBAR_TOGGLE_VIRTUAL:
            ^
Makefile:851: recipe for target 'curs_main.o' failed

This happens with latest master from git and with tag neomutt-20160416.

Seems the sidebar OP_SIDEBAR_XXX constants are missing.

vfolder-from-query seems broken

i get 0 results for any Query invoked in command mode. notmuch works though since i get my vfolders as before (before == with mutt-kz).

keywords.patch cause crash if standard mailbox does not exist

/var/mail/root: No such file or directory (errno = 2)
Program received signal SIGSEGV, Segmentation fault.
mutt_scan_labels (ctx=0x0) at headers.c:363
363 for (i = 0; i < ctx->msgcount; i++)
Missing separate debuginfos, use: zypper install krb5-debuginfo-1.14-3.1.x86_64 libassuan0-debuginfo-2.4.2-1.1.x86_64 libcom_err2-debuginfo-1.42.13-3.3.x86_64 libffi4-debuginfo-5.3.1+r231346-1.3.x86_64 libgcc_s1-debuginfo-5.3.1+r231346-1.3.x86_64 libgdbm4-debuginfo-1.11-5.20.x86_64 libgio-2_0-0-debuginfo-2.46.2-2.1.x86_64 libglib-2_0-0-debuginfo-2.46.2-2.1.x86_64 libgmime-2_6-0-debuginfo-2.6.20-4.4.x86_64 libgmodule-2_0-0-debuginfo-2.46.2-2.1.x86_64 libgobject-2_0-0-debuginfo-2.46.2-2.1.x86_64 libgpg-error0-debuginfo-1.21-1.1.x86_64 libgpgme11-debuginfo-1.6.0-2.2.x86_64 libidn11-debuginfo-1.32-1.3.x86_64 libkeyutils1-debuginfo-1.5.9-4.3.x86_64 libncurses5-debuginfo-6.0-0.x86_64 libnotmuch4-debuginfo-0.20.2-1.4.x86_64 libopenssl1_0_0-debuginfo-1.0.2g-1.1.x86_64 libsasl2-3-debuginfo-2.1.26-12.1.x86_64 libstdc++6-debuginfo-5.3.1+r231346-1.3.x86_64 libtalloc2-debuginfo-2.1.5-2.1.x86_64 libuuid1-debuginfo-2.27.1-2.10.x86_64 libxapian22-debuginfo-1.2.23-1.2.x86_64

Cleaning up trailing whitespaces and mixed indents

Going through the source here, I've noticed a significant amount of trailing whitespace and mixed indentation (tabs + spaces) in the code.

If you're okay with it, I can submit a patch that reformats the entire code with a single style, either tabs or spaces. What does the official Mutt use? We should follow the same.

Trailing whitespaces should always be eliminated, so I'll send a PR with that in any case, as soon as I'm done with the current task

sidebar breaks some fields in compose view

Hi all,

I'm using mutt 1.6.1 & the sidebar patch on gentoo. When the sidebar is visible, in the compose view (just before hitting Y to send an email) the "subject" & "sign as" fields are drawn "under" the sidebar (the rest are aligned as expected).

The attachment list is drawn as if it had the whole screen width to draw, so that the attachment type is cropped at the end of the line.

FWIW, I'm using the following flags for the mutt ebuild: berkdb crypt doc gdbm gpg imap libressl nls sasl sidebar smime smtp ssl -debug -gnutls -idn -kerberos -mbox -nntp -pop -qdbm -selinux -slang -tokyocabinet

I tried building both against ncurses & slang, with only sidebar_visible = yes & account config with the same results.

Is this reproducible on your end?

Keybase support for neomutt?

Is there any interest in adding Keybase support to neomutt? If anyone is unaware, Keybase is a new platform for managing keys. It is attempting to simplify PGP key management and make it more available to the masses.
Unfortunately, it's command line output is drastically different from gpg, making it very difficult to send inline signatures or messages. It does seem to be possible to create a "hacky" script to create attachments for neomutt to use.
I'll be looking into the pgp files on my own time to see about modifying them to allow for keybase, but, as I'm still new to C, I'm not sure how much headway I'll make.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.