lilalo

diff l3-agent @ 153:0414adc06059

Создана программа l3prompt.c (аналог l3prompt, написанного на Perl).
Занимается тем, что разбивает строку на блоки
и вставляет между ними строки-разделители.

По сути это нужно, чтобы сделать приглашение невидимым.

Сишная версия работает в 2-3 раза быстрее чем перловая.

По умолчанию не инсталлируется.

Для использования нужно откомпилировать
и положить вместо l3prompt

gcc -o l3prompt l3prompt.c
mv l3prompt ~/.lilalo/
author igor@book.xt.vpn
date Thu Dec 03 12:23:22 2009 +0200 (2009-12-03)
parents 58c869722fd0
children 8ee5e59f1bd3
line diff
     1.1 --- a/l3-agent	Sun Jun 29 15:09:04 2008 +0300
     1.2 +++ b/l3-agent	Thu Dec 03 12:23:22 2009 +0200
     1.3 @@ -344,6 +344,7 @@
     1.4          my $tty = $1;
     1.5          my %cl;
     1.6          my $last_output_length=0;
     1.7 +	my $saved_output;
     1.8          while (<FILE>) {
     1.9              $commandlines_processed++;
    1.10  
    1.11 @@ -555,6 +556,7 @@
    1.12  
    1.13                  # Output
    1.14                  if (!$last_cl{"suppress_output"} || $last_cl{"err"}) {
    1.15 +                    $last_cl{"output"}=$saved_output;
    1.16                      for (my $i=0; $i<$Config{"terminal_height"}; $i++) {
    1.17                          my $line= $vt{$local_session_id}->row_plaintext($i);
    1.18                          next if !defined ($line) ; #|| $line =~ /^\s*$/;
    1.19 @@ -568,6 +570,7 @@
    1.20                  }
    1.21  
    1.22                  $vt{$local_session_id}->reset();
    1.23 +		$saved_output="";
    1.24  
    1.25  
    1.26                  # Changing encoding 
    1.27 @@ -588,6 +591,20 @@
    1.28                  next;
    1.29              }
    1.30  
    1.31 +            if (($commandlines_processed%100) == 0) {
    1.32 +# Каждые сто строк обнуляем терминал и переносим вывод из него в кэш
    1.33 +                # Output
    1.34 +	        for (my $i=0; $i<$Config{"terminal_height"}; $i++) {
    1.35 +	   	    my $line= $vt{$local_session_id}->row_plaintext($i);
    1.36 +		    next if !defined ($line) ; #|| $line =~ /^\s*$/;
    1.37 +		    $line =~ s/\s*$//;
    1.38 +		    $line .= "\n" unless $line =~ /^\s*$/;
    1.39 +		    $saved_output .= $line;
    1.40 +	        }
    1.41 +                $vt{$local_session_id}->reset();
    1.42 +                $last_output_length=0;
    1.43 +	    }
    1.44 +
    1.45  # Иначе, это строка вывода
    1.46  
    1.47              $last_output_length+=length($_);