Hi David,
Though this is a reply to your email, most of the my comments are really
directed at all Mutt devs.
> I realize you're to some extent building your own extension/bundling of
> mutt here,
Someone likened it to kernel-next (or perhaps mutt-unstable)
A proving ground for features. Bringing patches to a wider audience.
The usual pattern is:
developer writes some code
it doesn't meet the mutt-dev standards (for whatever reason)
developer gives up
time passes
variants of the patch turn up (because people like the feature)
distros start bundling different versions the patch
Mutt should be doing everything it can to bring developers together.
NeoMutt's lower bar for entry should help.
> > Fmemopen Use fmemopen(3) for speedier temporary files
>
> +0. Interesting; Linux-specific but looks like it's properly
> conditional. Would rather see this behavior merged with mutt_mktemp so
> it only happens once and we get the benefit everywhere. mutt_opentemp()?
Good idea
> > Ifdef Conditional config options
>
> -0. Useful but an uncommon approach. Would sort of rather see mutt
> directly support abstract preprocessors so you can plug in m4, cpp, etc.
I'm not sure I understand. I want the symbols to be available as
strings, so they can be searched at runtime.
As for the string table, I just took the simplest approach.
The list could be held externally, like OPS, and processed into code.
> > Initials Expando Expando for Author's Initials
> -0. My gut says this is a specific case of a broader abstraction that we
> might prefer to support instead (of using up another expando). Also,
> already done with reverse_alias and an alias.
Fair point.
> > Limit-Current-Thread Limit Index View to Current Thread
>
> -1. Would prefer a ~. that matches the current message; then a ~(~.)
> macro would be equivalent.
That's what I thought, but then I looked at the code.
(Ignoring the fact that most of the alphabet is already used up)
The limiting machinery doesn't take any parameters, it just works on the
globals. Limiting to the "current thread" means passing a variable and
changing a lot of code.
> > Nested If Deeply nested conditionals in format strings
>
> +0. I wrote this, and still use it. It does come with a caveat though: it
> changes the behavior of %<>. I would be very surprised if that affects
> many people, but it is a thing.
>From the original patch :-)
The '%<...>' notation was used to format the current local time.
But that's not really very useful since mutt has no means of
refreshing the screen periodically.
> > Sidebar Panel containing list of Mailboxes
>
> Still riddled with issues, last I heard,
When was that? Since November, when I assumed ownership, It's largely
been rewritten.
There are certainly things I'd like to change and ways in which I'd like
to extend the idea. However, sidebar has been waiting on the sidelines
for ten years, already.
It's stable, it's useful. Time to let the users benefit.
> However if you really need to adjust screen drawing coordinates for
> everything, then the first issue is that it doesn't use
> distinct draw panels.
Nothing uses distinct draw panels.
Mutt is littered with hard-coded 0, COLS and LINES.
One awful example is mutt_FormatString().
It manipulates a string into a buffer. The string can be limited by the
number of bytes it takes or the number of screen columns it occupies.
However, COLS is hard-coded. Removing it means changing over 40 callers.
> it's like tag/labels vs folders.
Speaking of which, your keywords patch is in my in-tray.
Thank you for your balanced review.
Rich