lilalo

diff l3-frontend @ 115:9e6359b7ad55

Исправлена ошибка с смешением выводв сеансов
Добавлена поддержка таблуяции (tab completion)
l3config.pm перенесён в /etc/lilalo/ ; возможно не окончательно
Имя сервера для l3-upload не прописывается теперь жёстко в коде, а берётся из конфигурационного файла
author igor
date Sun Mar 09 22:54:22 2008 +0200 (2008-03-09)
parents 658b4ea105c1
children 71bd999bcb04
line diff
     1.1 --- a/l3-frontend	Sun Mar 09 02:38:56 2008 +0200
     1.2 +++ b/l3-frontend	Sun Mar 09 22:54:22 2008 +0200
     1.3 @@ -1,7 +1,7 @@
     1.4  #!/usr/bin/perl -w
     1.5  
     1.6  use POSIX qw(strftime);
     1.7 -use lib '.';
     1.8 +use lib '/etc/lilalo';
     1.9  use l3config;
    1.10  use utf8;
    1.11  
    1.12 @@ -380,6 +380,11 @@
    1.13  
    1.14  
    1.15      my $current_command=0;
    1.16 +    my $prev_i;
    1.17 +
    1.18 +    my $tab_seq =0 ; # номер команды в последовательности tab-completion
    1.19 +                     # отличен от нуля только для тех последовательностей, 
    1.20 +                     # где постоянно нажимается клавиша tab
    1.21  
    1.22  COMMAND_LINE_PROCESSING:
    1.23      for my $i (@Command_Lines_Index) {
    1.24 @@ -390,6 +395,12 @@
    1.25  
    1.26          my $cl = \$Command_Lines[$i];
    1.27  
    1.28 +        # Запоминаем предыщуюу команду
    1.29 +        # Она нам потребуется, в частности, для ввода tab_seq рпи обработке tab_completion
    1.30 +        my $prev_cl;
    1.31 +        $prev_cl = \$Command_Lines[$prev_i] if defined($prev_i);
    1.32 +        $prev_i = $i;
    1.33 +
    1.34          next if !$cl;
    1.35  
    1.36          for my $filter_key (keys %filter) {
    1.37 @@ -403,6 +414,7 @@
    1.38  
    1.39          $$cl->{err} ||=0;
    1.40  
    1.41 +
    1.42          # Класс команды
    1.43  
    1.44          $$cl->{"class"} =   $$cl->{"err"} eq 130 ?  "interrupted"
    1.45 @@ -460,6 +472,25 @@
    1.46          }
    1.47          $$cl->{short_output} = $output;
    1.48  
    1.49 +# Обработка команд с одинаковым временем
    1.50 +# Скорее всего они набраны с помощью tab-completion
    1.51 +        if (defined($prev_cl)) {
    1.52 +           if ($$prev_cl->{time} == $$cl->{time}) {
    1.53 +            $tab_seq++;
    1.54 +           } 
    1.55 +           else {
    1.56 +            $tab_seq=0;
    1.57 +           };
    1.58 +           $$prev_cl->{tab_seq}=$tab_seq;
    1.59 +
    1.60 +# Обработка команд с одинаковым номером в истории
    1.61 +# Скорее всего они набраны с помощью Ctrl-C
    1.62 +           if ($$prev_cl->{history} == $$cl->{history}) {
    1.63 +            $$prev_cl->{break}=1;
    1.64 +           }
    1.65 +        }
    1.66 +
    1.67 +
    1.68  #Обработка пометок
    1.69  #  Если несколько пометок (notes) идут подряд, 
    1.70  #  они все объединяются
    1.71 @@ -588,12 +619,6 @@
    1.72          last if $current_command > $Config{"start_from_command"} + $Config{"commands_to_show_at_a_go"};
    1.73  
    1.74  
    1.75 -# Пропускаем команды, с одинаковым временем
    1.76 -# Это не совсем правильно.
    1.77 -# Возможно, что это команды, набираемые с помощью <completion>
    1.78 -# или запомненные с помощью <ctrl-c>
    1.79 -
    1.80 -        next if $Stat{LastCommand} == $cl->{time};
    1.81  
    1.82  # Пропускаем строки, которые противоречат фильтру
    1.83  # Если у нас недостаточно информации о том, подходит строка под  фильтр или нет, 
    1.84 @@ -760,7 +785,13 @@
    1.85          $this_day_result .= "<div class='cline'>" . $cline ;      #cline
    1.86          $this_day_result .= "<span title='Код завершения ".$cl->{"err"}."'>\n"
    1.87                           .  "<img src='".$Config{frontend_ico_path}."/error.png'/>\n"
    1.88 -                         .  "</span>\n" if $cl->{"err"};
    1.89 +                         .  "</span>\n" if ($cl->{"err"} and not $cl->{tab_seq} and not $cl->{break});
    1.90 +        $this_day_result .= "<span title='Tab completion ".$cl->{tab_seq}."'>\n"
    1.91 +                         .  "<img src='".$Config{frontend_ico_path}."/tab.png'/>\n"
    1.92 +                         .  "</span>\n" if $cl->{tab_seq};
    1.93 +        $this_day_result .= "<span title='Ctrl-C pressed'>\n"
    1.94 +                         .  "<img src='".$Config{frontend_ico_path}."/break.png'/>\n"
    1.95 +                         .  "</span>\n" if ($cl->{break} and not $cl->{tab_seq});
    1.96          $this_day_result .= "</div>\n";                             #cline
    1.97  
    1.98  # OUTPUT