@@ -812,7 +812,6 @@ sub edPrintLineNum {
812
812
edWarn(E_ARGEXT);
813
813
return ;
814
814
}
815
-
816
815
my $adr = $adrs [1];
817
816
if (!defined ($adr )) {
818
817
$adr = $adrs [0];
@@ -821,9 +820,6 @@ sub edPrintLineNum {
821
820
$adr = maxline();
822
821
}
823
822
print " $adr \n " ;
824
-
825
- # v7 docs say this does not affect current line. GNU ed sets the line.
826
- # We go with the v7 docs.
827
823
}
828
824
829
825
#
@@ -982,11 +978,7 @@ sub getAddr {
982
978
return A_NOPAT unless defined $SearchPat ;
983
979
$re = $SearchPat ;
984
980
}
985
- if ($delim eq ' /' ) {
986
- $n = edSearchForward($re );
987
- } else {
988
- $n = edSearchBackward($re );
989
- }
981
+ $n = edSearch($re , $delim eq ' ?' );
990
982
$n = A_NOMATCH unless $n ;
991
983
}
992
984
return $n ;
@@ -1009,50 +1001,18 @@ sub getRe {
1009
1001
return $re ;
1010
1002
}
1011
1003
1012
- #
1013
- # Search forward for a pattern...wrap if not found
1014
- #
1015
- # Inputs:
1016
- # pattern - via argument
1017
- # CurrentLineNum - global
1018
- # lines - global
1019
- #
1020
- # Return:
1021
- # 0 - not found
1022
- # >0 - line where first found
1023
- #
1024
-
1025
- sub edSearchForward {
1026
- my ($pattern ) = @_ ;
1004
+ sub edSearch {
1005
+ my ($pattern , $backward ) = @_ ;
1027
1006
1028
1007
$SearchPat = $pattern ;
1029
- for my $line (($CurrentLineNum + 1) .. maxline(), 1 .. $CurrentLineNum ) {
1030
- if ($lines [$line ] =~ / $pattern / ) {
1031
- return $line ;
1032
- }
1008
+ my $cur = $CurrentLineNum ;
1009
+ my @idx ;
1010
+ if ($backward ) {
1011
+ @idx = reverse ($cur .. maxline(), 1 .. ($cur - 1));
1012
+ } else {
1013
+ @idx = (($cur + 1) .. maxline(), 1 .. $cur );
1033
1014
}
1034
- return 0;
1035
- }
1036
-
1037
- #
1038
- # Search backward for a pattern...wrap if not found
1039
- #
1040
- # Inputs:
1041
- # pattern - via argument
1042
- # CurrentLineNum - global
1043
- # lines - global
1044
- #
1045
- # Return:
1046
- # 0 - not found
1047
- # >0 - line where first found
1048
- #
1049
-
1050
- sub edSearchBackward {
1051
- my ($pattern ) = @_ ;
1052
-
1053
- $SearchPat = $pattern ;
1054
- my @idx = ($CurrentLineNum .. maxline(), 1 .. ($CurrentLineNum - 1));
1055
- foreach my $line (reverse @idx ) {
1015
+ foreach my $line (@idx ) {
1056
1016
if ($lines [$line ] =~ / $pattern / ) {
1057
1017
return $line ;
1058
1018
}
0 commit comments