2004-08-20T17:51:33 Nicolas Rachinsky: > * Bennett Todd <bet@xxxxxxxxx> [2004-08-20 17:44 +0000]: > > Is there any way to put a cap on how much of some headers gets > > displayed? We've got some ... clever people where I work, who are > > Yes. Some lines of perl and $display_filter should do it. Thank you, sir! The "h" toggle doesn't display the unmunged headers as I'd fantasized, but that's certainly reasonable, and |less is not particularly painful; if it were, in fact, I imagine I could get that behavior by learning about mutt macros:-). In case anybody else should care to have over-long headers chomped in mutt's view, I attach the happily trivial perl script to do the deed. -Bennett
#!/usr/bin/perl -w
use strict;
=head1 NAME
mutt_display_filter --- Bennett's header chomper
=head1 SYNOPSIS
mutt_display_filter --width=95 --height=4 --tabs=8
=head1 DESCRIPTION
mutt_display_filter reads a message (RFC 822, w/ optional From_
line) on stdin, and writes it to stdout. Headers are truncated; any
text line in any header that exceeds width=95 chars is truncated and
"..." appended; any header containing more than height=4 lines is
truncated and "..." is the fifth, final line. Tabs are every tabs=8
columns for purposes of width computation.
=cut
use Getopt::Long;
my $width = 95;
my $height = 4;
my $tabs = 8;
my $syntax = "syntax: mutt_display_filter [--width=$width] [--height=$height]
[--tabs=$tabs]\n";
GetOptions("width=s" => \$width, "height=s" => \$height, "tabs=i" => \$tabs) or
die $syntax;
die $syntax if @ARGV;
use Text::Tabs;
$tabstop = $tabs;
my @current;
while (<>) {
if (length == 1) {
print @current, $_, <>;
exit 0;
}
if (/^\S/) {
print @current;
@current = ();
}
push @current, "\t...\n" if @current == $height;
next if @current > $height;
chomp;
($_) = expand($_);
substr($_, $width) = "..." if length > $width;
push @current, map { "$_\n" } unexpand($_);
}
Attachment:
pgpFLDGNKBtSo.pgp
Description: PGP signature