| 162 |
long line_offsets[MAX_EDITOR_DATA_LINE_LENGTH + 1]; |
long line_offsets[MAX_EDITOR_DATA_LINE_LENGTH + 1]; |
| 163 |
long split_line_total; |
long split_line_total; |
| 164 |
long i, j; |
long i, j; |
| 165 |
|
int len; |
| 166 |
|
int eol; |
| 167 |
|
int display_len; |
| 168 |
|
|
| 169 |
if (p_editor_data == NULL || p_last_updated_line == NULL) |
if (p_editor_data == NULL || p_last_updated_line == NULL) |
| 170 |
{ |
{ |
| 218 |
{ |
{ |
| 219 |
if (p_editor_data->display_line_total >= MAX_EDITOR_DATA_LINES) |
if (p_editor_data->display_line_total >= MAX_EDITOR_DATA_LINES) |
| 220 |
{ |
{ |
| 221 |
log_error("Split line error, display_line_total(%ld) reach limit(%d)\n", |
// log_error("Split line error, display_line_total(%ld) reach limit(%d)\n", |
| 222 |
p_editor_data->display_line_total, MAX_EDITOR_DATA_LINES); |
// p_editor_data->display_line_total, MAX_EDITOR_DATA_LINES); |
| 223 |
return -2; |
return -2; |
| 224 |
} |
} |
| 225 |
|
|
| 308 |
// Insert blank display line after last_display_line |
// Insert blank display line after last_display_line |
| 309 |
if (p_editor_data->display_line_total >= MAX_EDITOR_DATA_LINES) |
if (p_editor_data->display_line_total >= MAX_EDITOR_DATA_LINES) |
| 310 |
{ |
{ |
| 311 |
log_error("display_line_total over limit %d >= %d\n", p_editor_data->display_line_total, MAX_EDITOR_DATA_LINES); |
// log_error("display_line_total over limit %d >= %d\n", p_editor_data->display_line_total, MAX_EDITOR_DATA_LINES); |
| 312 |
return -3; |
// Terminate prior display line with \n, to avoid error on cleanup |
| 313 |
|
if (display_line + i - 1 >= 0 && p_editor_data->display_line_lengths[display_line + i - 1] > 0) |
| 314 |
|
{ |
| 315 |
|
len = split_line(p_editor_data->p_display_lines[display_line + i - 1], SCREEN_COLS - 1, &eol, &display_len); |
| 316 |
|
p_editor_data->p_display_lines[display_line + i - 1][len] = '\n'; |
| 317 |
|
p_editor_data->p_display_lines[display_line + i - 1][len + 1] = '\0'; |
| 318 |
|
p_editor_data->display_line_lengths[display_line + i - 1] = len + 1; |
| 319 |
|
} |
| 320 |
|
if (*p_offset >= p_editor_data->display_line_lengths[*p_display_line]) |
| 321 |
|
{ |
| 322 |
|
*p_offset = p_editor_data->display_line_lengths[*p_display_line] - 1; |
| 323 |
|
} |
| 324 |
|
break; |
| 325 |
} |
} |
| 326 |
for (j = p_editor_data->display_line_total; j > last_display_line + 1; j--) |
for (j = p_editor_data->display_line_total; j > last_display_line + 1; j--) |
| 327 |
{ |
{ |
| 350 |
if (*p_offset >= p_editor_data->display_line_lengths[*p_display_line]) |
if (*p_offset >= p_editor_data->display_line_lengths[*p_display_line]) |
| 351 |
{ |
{ |
| 352 |
*p_offset -= p_editor_data->display_line_lengths[*p_display_line]; |
*p_offset -= p_editor_data->display_line_lengths[*p_display_line]; |
|
(*p_display_line)++; |
|
| 353 |
|
|
| 354 |
if (*p_display_line >= p_editor_data->display_line_total) |
if (*p_display_line + 1 >= p_editor_data->display_line_total) |
| 355 |
{ |
{ |
| 356 |
log_error("*p_display_line(%d) >= display_line_total(%d)\n", *p_display_line, p_editor_data->display_line_total); |
log_error("*p_display_line(%d) >= display_line_total(%d)\n", *p_display_line, p_editor_data->display_line_total); |
| 357 |
} |
} |
| 358 |
|
else |
| 359 |
|
{ |
| 360 |
|
(*p_display_line)++; |
| 361 |
|
} |
| 362 |
} |
} |
| 363 |
|
|
| 364 |
return 0; |
return 0; |