commit - 180163337afc8741ad996f601918faffd4277780
commit + 5fc8b927fcb7c5d814eaae082e8c1f349ee6cc4f
blob - eb86aa7eb4ffbf7f5082f6736e9064eadbafa6b5
blob + b32bf6571b8f586bff3b3fcf791cfd67a974f19e
--- config.h
+++ config.h
#define RVK_TG_HIDDEN "s"
#define RVK_TG_MARK "m"
#define RVK_INVMARK "M"
-#define RVK_TG_MARKALL "a"
+#define RVK_MARKALL "a"
/* Colors available: DEFAULT, RED, GREEN, YELLOW, BLUE, CYAN, MAGENTA, WHITE. */
#define RVC_CWD GREEN
blob - 876f172104572b1b2a847c7c3bb7d00b4b8b11b1
blob + ab6b85f9dd8d90542ce12b8060703560340a2930
--- rover.c
+++ rover.c
typedef struct {
char dirpath[FILENAME_MAX];
- int inverse;
int bulk;
int nentries;
char **entries;
init_marks(marks_t *marks)
{
strcpy(marks->dirpath, "");
- marks->inverse = 0;
marks->bulk = BULK_INIT;
marks->nentries = 0;
marks->entries = (char **) calloc(marks->bulk, sizeof(char *));
}
-/* If marks->inverse is nonzero, this will actually mark all! */
void
mark_none(marks_t *marks)
{
}
}
-/* If marks->inverse is nonzero, this will actually unmark entry! */
void
add_mark(marks_t *marks, char *dirpath, char *entry)
{
marks->nentries++;
}
-/* If marks->inverse is nonzero, this will actually mark entry! */
void
del_mark(marks_t *marks, char *entry)
{
else
strcpy(ROW, FNAME(j));
mvwhline(rover.window, i + 1, 1, ' ', COLS - 2);
- if (marking && (MARKED(i) ^ rover.marks.inverse))
+ if (marking && MARKED(i))
mvwaddch(rover.window, i + 1, 1, '*');
else
mvwaddch(rover.window, i + 1, 1, ' ');
update();
}
else if (!strcmp(key, RVK_INVMARK)) {
- rover.marks.inverse = !rover.marks.inverse;
+ for (i = 0; i < rover.nfiles; i++) {
+ if (MARKED(i))
+ del_mark(&rover.marks, FNAME(i));
+ else
+ add_mark(&rover.marks, CWD, FNAME(i));
+ MARKED(i) = !MARKED(i);
+ }
update();
}
- else if (!strcmp(key, RVK_TG_MARKALL)) {
- strcpy(rover.marks.dirpath, CWD);
- if (rover.marks.nentries) {
- for (i = 0; i < rover.nfiles; i++)
- MARKED(i) = 0;
- mark_none(&rover.marks);
- rover.marks.inverse = 0;
- }
- else
- rover.marks.inverse = !rover.marks.inverse;
+ else if (!strcmp(key, RVK_MARKALL)) {
+ for (i = 0; i < rover.nfiles; i++)
+ if (!MARKED(i)) {
+ add_mark(&rover.marks, CWD, FNAME(i));
+ MARKED(i) = 1;
+ }
update();
}
}