From 1892ed9fd7c930c6435e8f16f6bd6eca4573600a Mon Sep 17 00:00:00 2001 From: Bert Münnich Date: Sat, 9 Jun 2018 12:17:03 +0200 Subject: Simplify cg_mark_range --- commands.c | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) (limited to 'commands.c') diff --git a/commands.c b/commands.c index b5497d2..894ddd1 100644 --- a/commands.c +++ b/commands.c @@ -216,30 +216,19 @@ bool cg_reverse_marks(arg_t _) bool cg_mark_range(arg_t _) { - int i, from, to; - - from = markidx; - to = fileidx; - if (fileidx < markidx) { - from = fileidx; - to = markidx; - } - for (i = from; i <= to; i++) { - if (files[markidx].flags & FF_MARK) { - if (!(files[i].flags & FF_MARK)) { - files[i].flags |= FF_MARK; - markcnt += 1; - } - } else { - if (files[i].flags & FF_MARK) { - files[i].flags &= ~FF_MARK; - markcnt -= 1; - } + int i, d = fileidx < markidx ? 1 : -1; + int flag = files[markidx].flags & FF_MARK; + int oldmarkcnt = markcnt; + + for (i = fileidx; i != markidx; i += d) { + if ((files[i].flags & FF_MARK) ^ flag) { + files[i].flags = (files[i].flags & ~FF_MARK) | flag; + markcnt += flag ? 1 : -1; + if (mode == MODE_THUMB) + tns_mark(&tns, i, !!flag); } - if (mode == MODE_THUMB) - tns_mark(&tns, i, !!(files[i].flags & FF_MARK)); } - return true; + return markcnt != oldmarkcnt; } bool cg_unmark_all(arg_t _) -- cgit v1.2.3-54-g00ecf