diff options
Diffstat (limited to 'miscutils')
| -rw-r--r-- | miscutils/less.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/miscutils/less.c b/miscutils/less.c index 10e1d8e16..d1d4a71be 100644 --- a/miscutils/less.c +++ b/miscutils/less.c | |||
| @@ -1589,18 +1589,23 @@ static char opp_bracket(char bracket) | |||
| 1589 | 1589 | ||
| 1590 | static void match_right_bracket(char bracket) | 1590 | static void match_right_bracket(char bracket) |
| 1591 | { | 1591 | { |
| 1592 | unsigned i; | 1592 | unsigned i = cur_fline; |
| 1593 | 1593 | ||
| 1594 | if (cur_fline >= max_fline | 1594 | if (i >= max_fline |
| 1595 | || strchr(flines[cur_fline], bracket) == NULL | 1595 | || strchr(flines[i], bracket) == NULL |
| 1596 | ) { | 1596 | ) { |
| 1597 | print_statusline("No bracket in top line"); | 1597 | print_statusline("No bracket in top line"); |
| 1598 | return; | 1598 | return; |
| 1599 | } | 1599 | } |
| 1600 | |||
| 1600 | bracket = opp_bracket(bracket); | 1601 | bracket = opp_bracket(bracket); |
| 1601 | for (i = cur_fline + 1; i < max_fline; i++) { | 1602 | for (; i < max_fline; i++) { |
| 1602 | if (strchr(flines[i], bracket) != NULL) { | 1603 | if (strchr(flines[i], bracket) != NULL) { |
| 1603 | buffer_line(i); | 1604 | /* |
| 1605 | * Line with matched right bracket becomes | ||
| 1606 | * last visible line | ||
| 1607 | */ | ||
| 1608 | buffer_line(i - max_displayed_line); | ||
| 1604 | return; | 1609 | return; |
| 1605 | } | 1610 | } |
| 1606 | } | 1611 | } |
| @@ -1609,18 +1614,22 @@ static void match_right_bracket(char bracket) | |||
| 1609 | 1614 | ||
| 1610 | static void match_left_bracket(char bracket) | 1615 | static void match_left_bracket(char bracket) |
| 1611 | { | 1616 | { |
| 1612 | int i; | 1617 | int i = cur_fline + max_displayed_line; |
| 1613 | 1618 | ||
| 1614 | if (cur_fline + max_displayed_line >= max_fline | 1619 | if (i >= max_fline |
| 1615 | || strchr(flines[cur_fline + max_displayed_line], bracket) == NULL | 1620 | || strchr(flines[i], bracket) == NULL |
| 1616 | ) { | 1621 | ) { |
| 1617 | print_statusline("No bracket in bottom line"); | 1622 | print_statusline("No bracket in bottom line"); |
| 1618 | return; | 1623 | return; |
| 1619 | } | 1624 | } |
| 1620 | 1625 | ||
| 1621 | bracket = opp_bracket(bracket); | 1626 | bracket = opp_bracket(bracket); |
| 1622 | for (i = cur_fline + max_displayed_line; i >= 0; i--) { | 1627 | for (; i >= 0; i--) { |
| 1623 | if (strchr(flines[i], bracket) != NULL) { | 1628 | if (strchr(flines[i], bracket) != NULL) { |
| 1629 | /* | ||
| 1630 | * Line with matched left bracket becomes | ||
| 1631 | * first visible line | ||
| 1632 | */ | ||
| 1624 | buffer_line(i); | 1633 | buffer_line(i); |
| 1625 | return; | 1634 | return; |
| 1626 | } | 1635 | } |
