markus schnalke [Thu, 21 Apr 2016 14:43:25 +0000 (16:43 +0200)]
refile: Never change the current folder
Refile is different to all other tools, as its +folder arguments
are destination folders, not source folders (it even supports
multiple of them). A source folder can be specified with -src.
Refile used to change the current folder to the source folder.
It does not do so anymore.
Most often the current folder is used as the source folder; this is
the default. Hence changing the current folder is a no-op. But if
one refiles from some other source folder, changing to that folder
is seldom useful. Consider the scenario where one wants to collect
the last messages of a set of folders in some other folder. The
old behavior required to know where you are to collect the messages,
because after the first refile you'd be somewhere else:
for i in one two three ; do
refile -src +$i l +lastmsgs
done
# now we are in +three, hence go back where we were
folder +lastmsgs
The new behavior allows to move the messages just here (@), no
matter where that is:
for i in one two three ; do
refile -src +one l @
done
# now we still are where we were
Refiling actions do no more affect the current folder, hence one
may securely refile with different -src +folder many times in one
row, without having to care for changing locations.
markus schnalke [Wed, 20 Apr 2016 07:02:06 +0000 (09:02 +0200)]
Fix order of (trim) and (decode) in repl*comps
Before MH had (decode), the format escapes used to be:
%(void{comp})%(trim)%(putstr)
i.e. set the internal str register to the component text, trim
trailing whitespace from it, then print the value. Later (putstr)
was simply replaced by (decode), which first RFC-2047 decodes the
string and then prints it (if it is the outermost function). That
almost always produced the correct result. But this way the
whitespace trimming is done at the wrong point. Correct is to first
decode the string and then trim it. tests/scan/test-mh-format
checks for that.
markus schnalke [Wed, 20 Apr 2016 06:54:20 +0000 (08:54 +0200)]
Trim trailing whitespace in scan and show
This commit fixes the most common scan listings. Still trailing
whitespace will be generated by legacy scan listings.
The formatfield workaround in etc/mhl.headers is a bit clumsy.
Maybe, an mhl variable should be defined for this case ... or
better not, to keep the mh-format and the mhl functions orthogonal.
markus schnalke [Wed, 20 Apr 2016 06:19:24 +0000 (08:19 +0200)]
Make default scan/inc listing file-based
There's now a new format file etc/scan.default, which contains
the default scan listing. Previously it was hard-coded as a define
in h/scansbr.h. The default scan listing format can be set in
config/config.h and can be queried with `mhparam scanformat'.
markus schnalke [Tue, 19 Apr 2016 14:15:10 +0000 (16:15 +0200)]
Cleanup manpage mh-format(5)
- More suitable scan listing examples
- Adjust paths
- There are no ``local mh experts'' anymore in the mmh world
- Add overview on the escape types
- %(decode) does print str as well
- Decode Subject header in the example
- Further minor stuff
The manual page of repl says "[i]f a file named `mhl.reply' exists in the
user's mmh directory, it will be used instead of [the default form file]".
Now this behavior is implement.
markus schnalke [Wed, 28 Oct 2015 22:19:14 +0000 (23:19 +0100)]
Build the release tarball from git, not manually
Previously the Makefiles contained lists of files to distribute.
They built the release tarball manually. It's much easier to just
use git, which knows which files are the relevant files, because
it's the ones that are under version control. We just need to
add some additional, pre-generated files for convenience, so that
the user does not need to have auto* and lex installed.
The release tarball is now fully assembled in the top-level
Makefile. (The only tricky part is sbr/dtimep.c, because that
needs to be generated in the subdirectory.)
markus schnalke [Wed, 28 Oct 2015 16:50:24 +0000 (17:50 +0100)]
Include `test' dir in release tarball
The subdirectories `docs' and `test' are managed by the top-level
Makefile now, because there's nothing to do in them but to copy
them for the distribution tarball. (This way, we also don't have
to include each new file in these directories to the file list in
Makefile.in.)
markus schnalke [Tue, 27 Oct 2015 06:43:58 +0000 (07:43 +0100)]
Ensure $SHELL is set for the tests
Non-interactive shells might not set it (this is true for dash
and mksh, at least). Currently we use $SHELL in whatnow(1).
Although we likely remove this use, it's rather worthwhile to
have $SHELL available in the test scripts.
markus schnalke [Mon, 26 Oct 2015 07:04:55 +0000 (08:04 +0100)]
Update TODO list
Some comments on the removed items:
- Mmh's show does already invoke a pager
- The reverse action of `rmm' is: refile -src +trash l @
- Disjunct contexts are already possible (just set MMHC accordingly)
- We already generate the mh-chart man page
- Prompter can already be used to input the recipients. Use:
Editor: prompter
prompter: -nobody
prompter-next: vi
- Comp: -nowhatnowproc is obsolete; use `-whatnowproc true' instead.
(It puts an empty draft into the drafts folder.)
- Forw: Since we use MIME to forward messages, these todos are obsolete
- Mhmail is not considered to be a full-featured interface to MH
- We now do have RFC 2047 encoding of headers
markus schnalke [Sun, 25 Oct 2015 20:34:20 +0000 (21:34 +0100)]
send: MIMEify with non-ascii header and ascii body!
This code is not perfect, as it scans body lines twice. We might
want to rework it someday. But, ignoring the minor performance
issue, it ensures, that we MIMEify in the case when some headers
contain non-ASCII text but the body does not.
markus schnalke [Fri, 23 Oct 2015 07:52:55 +0000 (09:52 +0200)]
Fix off-by-one error (CPERLIN)
CPERLIN is the chars per line without the line break chars (\r\n),
at least would that match the description in RFC 2822. Actually,
however, the max SHOULD line length (excluding line break chars)
is 78 according to the RFC. Therefore it seems as if we should
set CPERLIN to 78. (This is open to decide and to do.)
markus schnalke [Wed, 21 Oct 2015 15:35:14 +0000 (17:35 +0200)]
Coding style adjustments for nmh-imported code
- No documentation in h/prototypes.h, but rather in the sbr/*.c files
- Convert coding style from nmh to mmh:
+ indent with tabs only not with a tab-spaces-mixture
+ no space between function name and opening parenthesis
+ no space on the inner side of parens
+ no trailing space
+ different comment style
- Variable definition at the beginning of the block only (ANSI C)
- Choose meaningful identifier name rather than add a comment to a
meaningless name
markus schnalke [Fri, 2 Oct 2015 17:49:38 +0000 (19:49 +0200)]
mhbuild: Avoid a dot on a line on its own
mhbuild's quoted-printable encoder breaks lines to have at most
CPERLIN chars. If the it happens that the last character on the
line is a dot (`.') and the line is broken just before it, then
the following line contains nothing but one single dot. This
currently leads to problems in mmh ... but it may cause problems
to other mail software as well. Hence we avoid it by encoding
any dot at the beginning of a line, just to be sure.