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++;
case '}': case ']': break;
return bracket - 2; case '}': case ']':
case ')': bracket--;
return '('; case ')':
} bracket--;
return 0; break;
};
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 */