lilalo
diff l3-frontend @ 117:9bb58a1eee2b
l3prompt minifix $_[0] -> $ARGV[0]
author | igor |
---|---|
date | Mon Mar 10 01:30:07 2008 +0200 (2008-03-10) |
parents | 658b4ea105c1 |
children | 71bd999bcb04 |
line diff
1.1 --- a/l3-frontend Sun Mar 09 02:38:56 2008 +0200 1.2 +++ b/l3-frontend Mon Mar 10 01:30:07 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