less: shrink

This commit is contained in:
Denis Vlasenko 2008-02-24 19:18:18 +00:00
parent 4f82bdb050
commit b78d1c045f

View File

@ -1175,41 +1175,40 @@ static void goto_mark(void)
static char opp_bracket(char bracket) static char opp_bracket(char bracket)
{ {
switch (bracket) { switch (bracket) {
case '{': case '[': case '{': case '[': /* '}' == '{' + 2. Same for '[' */
return bracket + 2; bracket++;
case '(': case '(': /* ')' == '(' + 1 */
return ')'; bracket++;
break;
case '}': case ']': case '}': case ']':
return bracket - 2; bracket--;
case ')': case ')':
return '('; bracket--;
} break;
return 0; };
return bracket;
} }
static void match_right_bracket(char bracket) static void match_right_bracket(char bracket)
{ {
int bracket_line = -1;
int i; int i;
if (strchr(flines[cur_fline], bracket) == NULL) { if (strchr(flines[cur_fline], bracket) == NULL) {
print_statusline("No bracket in top line"); print_statusline("No bracket in top line");
return; return;
} }
bracket = opp_bracket(bracket);
for (i = cur_fline + 1; i < max_fline; i++) { for (i = cur_fline + 1; i < max_fline; i++) {
if (strchr(flines[i], opp_bracket(bracket)) != NULL) { if (strchr(flines[i], bracket) != NULL) {
bracket_line = i; buffer_line(i);
break; return;
} }
} }
if (bracket_line == -1)
print_statusline("No matching bracket found"); print_statusline("No matching bracket found");
buffer_line(bracket_line - max_displayed_line);
} }
static void match_left_bracket(char bracket) static void match_left_bracket(char bracket)
{ {
int bracket_line = -1;
int i; int i;
if (strchr(flines[cur_fline + max_displayed_line], bracket) == NULL) { if (strchr(flines[cur_fline + max_displayed_line], bracket) == NULL) {
@ -1217,15 +1216,14 @@ static void match_left_bracket(char bracket)
return; return;
} }
bracket = opp_bracket(bracket);
for (i = cur_fline + max_displayed_line; i >= 0; i--) { for (i = cur_fline + max_displayed_line; i >= 0; i--) {
if (strchr(flines[i], opp_bracket(bracket)) != NULL) { if (strchr(flines[i], bracket) != NULL) {
bracket_line = i; buffer_line(i);
break; return;
} }
} }
if (bracket_line == -1)
print_statusline("No matching bracket found"); print_statusline("No matching bracket found");
buffer_line(bracket_line);
} }
#endif /* FEATURE_LESS_BRACKETS */ #endif /* FEATURE_LESS_BRACKETS */