Unindenting the part that was the 'else'.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5463 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
master
Benno Schulenberg 2015-12-01 13:33:45 +00:00
parent eee07d5755
commit 07e806e7f2
2 changed files with 98 additions and 105 deletions

View File

@ -5,6 +5,7 @@
* src/text.c (redo_cut): Delete two redundant assignments. * src/text.c (redo_cut): Delete two redundant assignments.
* src/winio.c (edit_draw): Move a check to a better place. * src/winio.c (edit_draw): Move a check to a better place.
* src/winio.c (edit_draw): Rename a label and elide an 'else'. * src/winio.c (edit_draw): Rename a label and elide an 'else'.
* src/winio.c (edit_draw): Unindent after previous change.
2015-11-30 Benno Schulenberg <bensberg@justemail.net> 2015-11-30 Benno Schulenberg <bensberg@justemail.net>
* src/text.c (redo_cut, update_undo): When cutting reaches the EOF, * src/text.c (redo_cut, update_undo): When cutting reaches the EOF,

View File

@ -2611,153 +2611,145 @@ void edit_draw(filestruct *fileptr, const char *converted, int
if (startmatch.rm_so == startmatch.rm_eo) if (startmatch.rm_so == startmatch.rm_eo)
goto tail_of_loop; goto tail_of_loop;
{ /* Now start_line is the first line before fileptr containing
/* Now start_line is the first line before fileptr * a start match. Is there a start on that line not followed
* containing a start match. Is there a start on * by an end on that line? */
* this line not followed by an end on this line? */ start_col = 0;
start_col = 0; while (TRUE) {
while (TRUE) { start_col += startmatch.rm_so;
start_col += startmatch.rm_so; startmatch.rm_eo -= startmatch.rm_so;
startmatch.rm_eo -= startmatch.rm_so; if (regexec(tmpcolor->end, start_line->data +
if (regexec(tmpcolor->end, start_line->data +
start_col + startmatch.rm_eo, 0, NULL, start_col + startmatch.rm_eo, 0, NULL,
(start_col + startmatch.rm_eo == 0) ? (start_col + startmatch.rm_eo == 0) ?
0 : REG_NOTBOL) == REG_NOMATCH) 0 : REG_NOTBOL) == REG_NOMATCH)
/* No end found after this start. */ /* No end found after this start. */
break; break;
start_col++; start_col++;
if (regexec(tmpcolor->start, start_line->data + if (regexec(tmpcolor->start, start_line->data +
start_col, 1, &startmatch, start_col, 1, &startmatch,
REG_NOTBOL) == REG_NOMATCH) REG_NOTBOL) == REG_NOMATCH)
/* No later start on this line. */ /* No later start on this line. */
goto step_two; goto step_two;
} }
/* Indeed, there is a start not followed on this /* Indeed, there is a start without an end on that line. */
* line by an end. */
/* We have already checked that there is no end /* We've already checked that there is no end before fileptr
* before fileptr and after the start. Is there an * and after the start. But is there an end after the start
* end after the start at all? We don't paint * at all? We don't paint unterminated starts. */
* unterminated starts. */ end_line = fileptr;
end_line = fileptr; while (end_line != NULL && regexec(tmpcolor->end,
while (end_line != NULL && regexec(tmpcolor->end,
end_line->data, 1, &endmatch, 0) == REG_NOMATCH) end_line->data, 1, &endmatch, 0) == REG_NOMATCH)
end_line = end_line->next; end_line = end_line->next;
/* If no end was found, or it is too early, next step. */ /* If no end was found, or it is too early, next step. */
if (end_line == NULL) if (end_line == NULL)
goto step_two; goto step_two;
if (end_line == fileptr && endmatch.rm_eo <= startpos) { if (end_line == fileptr && endmatch.rm_eo <= startpos) {
fileptr->multidata[tmpcolor->id] = CBEGINBEFORE; fileptr->multidata[tmpcolor->id] = CBEGINBEFORE;
goto step_two; goto step_two;
} }
/* Now paint the start of fileptr. If the start of /* Now paint the start of fileptr. If the start of fileptr
* fileptr is on a different line from the end, * is on a different line from the end, paintlen is -1, which
* paintlen is -1, meaning that everything on the * means that everything on the line gets painted. Otherwise,
* line gets painted. Otherwise, paintlen is the * paintlen is the expanded location of the end of the match
* expanded location of the end of the match minus * minus the expanded location of the beginning of the page. */
* the expanded location of the beginning of the if (end_line != fileptr) {
* page. */ paintlen = -1;
if (end_line != fileptr) { fileptr->multidata[tmpcolor->id] = CWHOLELINE;
paintlen = -1;
fileptr->multidata[tmpcolor->id] = CWHOLELINE;
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, " Marking for id %i line %i as CWHOLELINE\n", tmpcolor->id, line); fprintf(stderr, " Marking for id %i line %i as CWHOLELINE\n", tmpcolor->id, line);
#endif #endif
} else { } else {
paintlen = actual_x(converted, paintlen = actual_x(converted, strnlenpt(fileptr->data,
strnlenpt(fileptr->data, endmatch.rm_eo) - start);
endmatch.rm_eo) - start); fileptr->multidata[tmpcolor->id] = CBEGINBEFORE;
fileptr->multidata[tmpcolor->id] = CBEGINBEFORE;
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, " Marking for id %i line %i as CBEGINBEFORE\n", tmpcolor->id, line); fprintf(stderr, " Marking for id %i line %i as CBEGINBEFORE\n", tmpcolor->id, line);
#endif #endif
} }
mvwaddnstr(edit, line, 0, converted, paintlen); mvwaddnstr(edit, line, 0, converted, paintlen);
/* If the whole line has been painted, don't bother /* If the whole line has been painted, don't bother looking
* looking for any more starts. */ * for any more starts. */
if (paintlen < 0) if (paintlen < 0)
goto tail_of_loop; goto tail_of_loop;
step_two: step_two:
/* Second step: look for starts on this line, but start /* Second step: look for starts on this line, but start
* looking only after an end match, if there is one. */ * looking only after an end match, if there is one. */
start_col = (paintlen == 0) ? 0 : endmatch.rm_eo; start_col = (paintlen == 0) ? 0 : endmatch.rm_eo;
while (start_col < endpos) { while (start_col < endpos) {
if (regexec(tmpcolor->start, fileptr->data + if (regexec(tmpcolor->start, fileptr->data + start_col,
start_col, 1, &startmatch, (start_col == 1, &startmatch, (start_col == 0) ?
0) ? 0 : REG_NOTBOL) == REG_NOMATCH || 0 : REG_NOTBOL) == REG_NOMATCH ||
start_col + startmatch.rm_so >= endpos) start_col + startmatch.rm_so >= endpos)
/* No more starts on this line. */ /* No more starts on this line. */
break; break;
/* Translate the match to be relative to the
* beginning of the line. */
startmatch.rm_so += start_col;
startmatch.rm_eo += start_col;
x_start = (startmatch.rm_so <= startpos) ? 0 : /* Translate the match to be relative to the
strnlenpt(fileptr->data, * beginning of the line. */
startmatch.rm_so += start_col;
startmatch.rm_eo += start_col;
x_start = (startmatch.rm_so <= startpos) ?
0 : strnlenpt(fileptr->data,
startmatch.rm_so) - start; startmatch.rm_so) - start;
index = actual_x(converted, x_start); index = actual_x(converted, x_start);
if (regexec(tmpcolor->end, fileptr->data + if (regexec(tmpcolor->end, fileptr->data +
startmatch.rm_eo, 1, &endmatch, startmatch.rm_eo, 1, &endmatch,
(startmatch.rm_eo == 0) ? 0 : (startmatch.rm_eo == 0) ?
REG_NOTBOL) == 0) { 0 : REG_NOTBOL) == 0) {
/* Translate the end match to be relative to /* Translate the end match to be relative to
* the beginning of the line. */ * the beginning of the line. */
endmatch.rm_so += startmatch.rm_eo; endmatch.rm_so += startmatch.rm_eo;
endmatch.rm_eo += startmatch.rm_eo; endmatch.rm_eo += startmatch.rm_eo;
/* There is an end on this line. But does /* There is an end on this line. But does
* it appear on this page, and is the match * it appear on this page, and is the match
* more than zero characters long? */ * more than zero characters long? */
if (endmatch.rm_eo > startpos && if (endmatch.rm_eo > startpos &&
endmatch.rm_eo > startmatch.rm_so) { endmatch.rm_eo > startmatch.rm_so) {
paintlen = actual_x(converted + index, paintlen = actual_x(converted + index,
strnlenpt(fileptr->data, strnlenpt(fileptr->data,
endmatch.rm_eo) - start - endmatch.rm_eo) - start - x_start);
x_start);
assert(0 <= x_start && x_start < COLS); assert(0 <= x_start && x_start < COLS);
mvwaddnstr(edit, line, x_start, mvwaddnstr(edit, line, x_start,
converted + index, paintlen); converted + index, paintlen);
if (paintlen > 0) { if (paintlen > 0) {
fileptr->multidata[tmpcolor->id] = CSTARTENDHERE; fileptr->multidata[tmpcolor->id] = CSTARTENDHERE;
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, " Marking for id %i line %i as CSTARTENDHERE\n", tmpcolor->id, line); fprintf(stderr, " Marking for id %i line %i as CSTARTENDHERE\n", tmpcolor->id, line);
#endif #endif
}
} }
start_col = endmatch.rm_eo; }
} else { start_col = endmatch.rm_eo;
/* There is no end on this line. But we } else {
* haven't yet looked for one on later /* There is no end on this line. But we haven't yet
* lines. */ * looked for one on later lines. */
end_line = fileptr->next; end_line = fileptr->next;
while (end_line != NULL && while (end_line != NULL &&
regexec(tmpcolor->end, end_line->data, regexec(tmpcolor->end, end_line->data,
0, NULL, 0) == REG_NOMATCH) 0, NULL, 0) == REG_NOMATCH)
end_line = end_line->next; end_line = end_line->next;
if (end_line != NULL) { if (end_line != NULL) {
assert(0 <= x_start && x_start < COLS); assert(0 <= x_start && x_start < COLS);
mvwaddnstr(edit, line, x_start, mvwaddnstr(edit, line, x_start,
converted + index, -1); converted + index, -1);
fileptr->multidata[tmpcolor->id] = CENDAFTER; fileptr->multidata[tmpcolor->id] = CENDAFTER;
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, " Marking for id %i line %i as CENDAFTER\n", tmpcolor->id, line); fprintf(stderr, " Marking for id %i line %i as CENDAFTER\n", tmpcolor->id, line);
#endif #endif
/* We painted to the end of the line, so /* We painted to the end of the line, so
* don't bother checking any more starts. */ * don't bother checking any more starts. */
break; break;
}
start_col = startmatch.rm_so + 1;
} }
start_col = startmatch.rm_so + 1;
} }
} }
} }