X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;ds=inline;f=selector.cc;h=568da6edf43ff2caca5e7aa388bf119a10fe9593;hb=72ea0e7ee69d459ff991f8417be648e4494fa8c1;hp=7422fd6c2ac62b8db32e148b34b1cd4b6831ce72;hpb=e4ebdbec894a0edf237c76737218a309db967794;p=selector.git diff --git a/selector.cc b/selector.cc index 7422fd6..568da6e 100644 --- a/selector.cc +++ b/selector.cc @@ -388,6 +388,12 @@ void update_screen(int *current_line, int *temporary_line, int motion, ////////////////////////////////////////////////////////////////////// int main(int argc, char **argv) { + + if(!ttyname(STDIN_FILENO)) { + cerr << "The standard input is not a tty." << endl; + exit(1); + } + char buffer[buffer_size]; int color_fg_modeline, color_bg_modeline; int color_fg_highlight, color_bg_highlight; @@ -562,6 +568,8 @@ int main(int argc, char **argv) { lines[nb_lines] = new char[strlen(s) + 1]; strcpy(lines[nb_lines], s); } else { + // We do not allocate a new string but use the pointer to the + // first occurence of it lines[nb_lines] = lines[dup]; lines[dup] = 0; } @@ -572,6 +580,8 @@ int main(int argc, char **argv) { delete[] hash_table; + // Now remove the null strings + int n = 0; for(int k = 0; k < nb_lines; k++) { if(lines[k]) { @@ -593,8 +603,19 @@ int main(int argc, char **argv) { int pattern_point; pattern_point = 0; + ////////////////////////////////////////////////////////////////////// + // Here we start to display with curse + initscr(); + noecho(); + + // Hide the cursor + curs_set(0); + + // So that the arrow keys work + keypad(stdscr, TRUE); + if(with_colors) { if(has_colors()) { start_color(); @@ -615,10 +636,6 @@ int main(int argc, char **argv) { } } - noecho(); - curs_set(0); // Hide the cursor - keypad(stdscr, TRUE); // So that the arrow keys work - int key; int current_line = 0, temporary_line = 0; @@ -685,6 +702,9 @@ int main(int argc, char **argv) { curs_set(1); endwin(); + ////////////////////////////////////////////////////////////////////// + // Here we come back to standard display + if((key == KEY_ENTER || key == '\n')) { if(output_to_vt_buffer) {