- int maxy = getmaxy(stdscr);
- printw("maxx %d maxy %d\n", maxx, maxy);
- printw("nb_lines %d\n", nb_lines);
- int nb_printed_lines = 2;
- for(int y = 0; nb_printed_lines < maxy && y < nb_lines; y++) {
+ int maxy = min(buffer_size-2, getmaxy(stdscr));
+
+ // clear(); // Cleaning the window
+
+ use_default_colors();
+
+ printw("\n");
+
+ int nb_printed_lines = 1, last_printer_line = -1;
+ int y = 0;
+
+ while(nb_printed_lines < maxy && y < nb_lines) {
+ if(strstr(lines[y], regexp) &&
+ (last_printer_line < 0 || strcmp(lines[y], lines[last_printer_line]))) {
+ int k = 0;
+
+ while(lines[y][k] && k < buffer_size - 2 && k < maxx - 1) {
+ buffer[k] = lines[y][k];
+ k++;
+ }
+
+ while(k < maxx - 1) {
+ buffer[k++] = ' ';
+ }
+ buffer[k++] = '\n';
+ buffer[k++] = '\0';
+
+ if(nb_printed_lines == *line + 1) {
+ attron(COLOR_PAIR(2));
+ printw(buffer);
+ attroff(COLOR_PAIR(2));
+ } else {
+ printw(buffer);
+ }
+
+ last_printer_line = y;
+ nb_printed_lines++;
+ }
+ y++;
+ }
+
+ { // Erase the rest of the window. That's slightly ugly.