Thumbnail

rani/cscroll.git

Clone URL: https://git.buni.party/rani/cscroll.git

commit 4902e33ab2ee585e408c5d672b538178b8edfef7 Author: Raniconduh <clagv.randomgames@gmail.com> Date: Mon Oct 11 22:25:01 2021 +0000 added file marking diff --git a/include/dir.h b/include/dir.h index ad077d9..7e9075c 100644 --- a/include/dir.h +++ b/include/dir.h @@ -246 +247 @@ struct dir_entry_t {   char * name;   enum file_type_t file_type;   bool exec; + bool marked;  };     diff --git a/include/io.h b/include/io.h index 883472c..5a75bad 100644 --- a/include/io.h +++ b/include/io.h @@ -323 +324 @@ char * prompt(char *, char **);    extern bool print_path;  extern FILE * stdout_back; +extern size_t n_marked_files; diff --git a/src/dir.c b/src/dir.c index 2536ead..32c2773 100644 --- a/src/dir.c +++ b/src/dir.c @@ -848 +849 @@ int list_dir(char * dir_path) {     free(buf);   - dir_entries[n_dir_entries] = dir_entry; + dir_entry->marked = false;   + dir_entries[n_dir_entries] = dir_entry;   n_dir_entries++;   }   diff --git a/src/io.c b/src/io.c index 5b36987..79de4fd 100644 --- a/src/io.c +++ b/src/io.c @@ -86 +87 @@    bool print_path = false;  FILE * stdout_back = NULL; +size_t n_marked_files = false;    void curses_init(void) {   if (print_path) { @@ -876 +887 @@ void curses_write_file(struct dir_entry_t * dir_entry, bool highlight) {   cp = COLOR_PAIR((unsigned)cp);   if (highlight) cp |= A_REVERSE;   + if (dir_entry->marked) printw("%c ", '-');   attron(cp);   printw("%s", dir_entry->name);   attroff(cp); diff --git a/src/main.c b/src/main.c index e56fee8..4231b67 100644 --- a/src/main.c +++ b/src/main.c @@ -6210 +6211 @@ int main(int argc, char ** argv) {     // print files   for (size_t i = first_f; i < last_f; i++) { + bool h = false;   if (cursor - 1 == i) - curses_write_file(dir_entries[i], true); - else - curses_write_file(dir_entries[i], false); + h = true; + + curses_write_file(dir_entries[i], h);   }     // print cursor / total entries @@ -1486 +14915 @@ int main(int argc, char ** argv) {   last_f = LAST_F;   }   break; + case 'm': + if (!dir_entries[cursor - 1]->marked) { + dir_entries[cursor - 1]->marked = true; + n_marked_files++; + } else { + dir_entries[cursor - 1]->marked = false; + if (n_marked_files) n_marked_files--; + } + break;   case 'q':   goto done;   default: