Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 vim + fido quoting   Dmitry Pyzhov   10 Apr 2003 22:48:01 
 Re: vim + fido quoting   Artem Chuprina   11 Apr 2003 12:32:05 
 Re: vim + fido quoting   Oleg Sheremetinsky   11 Apr 2003 00:21:52 
Архивное /ru.linux/44993081806f.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional