|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Oleg Sheremetinsky 2:5030/1400.34 11 Apr 2003 00:21:52 To : Dmitry Pyzhov Subject : Re: vim + fido quoting --------------------------------------------------------------------------------
Thu, 10 Apr 2003 22:48:01 +0400 Dmitry Pyzhov
написал(а) в ru.linux следующее:
DP> Как вим научить понимать фидошный квотинг? Чтоб при разбитии строки на
DP> две в новой автоматом прописывались инициалы, а при слиянии -
DP> удалялись... Короче - чтоб редактирование было как в голделе :) Если к
DP> gvim ещё и цвето- выделение фидошное можно прикрутить, то вообще
DP> здорово.
Вот, в свое время добрые люди скриптик подбросили:
==Quoting==
#!/usr/bin/perl
# format article with quoting
# + sequential blank lines shrinked
# + preserve format if line starts with whitespace
use locale; # /\w/ matches russian letters
$textwidth = 76;
$quoting = '^( ?)(\w{1,10})(>{1,10})([^>].*|$)';
$header = '^[A-Z][-A-Za-z]+:.*';
# $1: whitespace, $2: initials, $3: quote symbols, $4: citation
while (<>) {
if (/$header/) {
print; next;
}
if (/^-- $/) { # signature: skip until EOF
print; print while (<>); last;
}
if (/^$/) {
&format_quote;
print unless $last_was_blank;
$last_was_blank++;
next;
} else {
$last_was_blank = 0;
}
chomp;
if (/$quoting/) {
if ($2 ne $author || length $3 != $level) { # new quote level
&format_quote;
$whitespace = $1;
$author = $2;
$level = length $3;
}
$text .= " $4";
} elsif (/^\s/) {
&format_quote;
print; print "\n"; next;
} else {
&format_quote if ($level);
$text .= " $_";
}
}
&format_quote;
sub format_quote {
return unless $text;
local $_;
$prefix = $whitespace . $author . '>' x $level;
$leftmargin = 0;
$_ = $text;
foreach $word (split) {
unless ($leftmargin) {
print $prefix;
$leftmargin = length($prefix);
}
if (($leftmargin + length($word) + 1) > $textwidth) {
if ((length($prefix) + length($word) + 1) > $textwidth) {
print ' ' if $leftmargin;
print substr($word, 0, $textwidth - $leftmargin, '');
}
print "\n";
$leftmargin = 0;
redo;
}
print ' ' if $leftmargin;
print $word;
$leftmargin += length($word) + 1;
}
print "\n";
$whitespace = '';
$author = '';
$level = 0;
$text = '';
}
==Quoting==
Hу, и в .vimrc добавь что-то типа:
autocmd BufRead ~/.article.* %!~/Quoting
autocmd BufRead ~/.letter.* %!~/Quoting
autocmd BufRead ~/.followup %!~/Quoting
--
С уважением, Шереметинский Олег Птн Апр 11 00:16:51 MSD 2003
E-mail: sheremetinsky@kaluga.ru (г. Калуга)
--- tin/1.5.16-20030125 ("Bubbles") (UNIX) (Linux/2.4.18-19.7asp (i686))
* Origin: Гусара триппером не запугаешь! (2:5030/1400.34)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/44993081806f.html, оценка из 5, голосов 10
|