aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-25 14:02:30 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-25 14:02:30 +0100
commit036cc00ecdb8908f3ac54e8cc9fef006bbd8095e (patch)
tree0f702dbdc2c2b076517328280b7cb1a8f375a298
parentd840485e08d2dc395f57502eba845ac6f2c16d5c (diff)
downloadsciteco-036cc00ecdb8908f3ac54e8cc9fef006bbd8095e.tar.gz
fixed range interpretation for search command: had to be given in the wrong order
* also inverse ranges are now supported (<a,b>S if a>b) and result in constrained backward searches
-rw-r--r--parser.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/parser.cpp b/parser.cpp
index a94f7dd..b63658d 100644
--- a/parser.cpp
+++ b/parser.cpp
@@ -1441,12 +1441,19 @@ StateSearch::initial(void) throw (Error)
if (expressions.args()) {
/* TODO: optional count argument? */
parameters.count = 1;
- parameters.from = (gint)v;
- parameters.to = (gint)expressions.pop_num_calc();
+ parameters.from = (gint)expressions.pop_num_calc();
+ parameters.to = (gint)v;
if (!Validate::pos(parameters.from) ||
!Validate::pos(parameters.to))
throw RangeError("S");
+
+ if (parameters.from > parameters.to) {
+ v = parameters.from;
+ parameters.from = parameters.to;
+ parameters.to = v;
+ parameters.count *= -1;
+ }
} else {
parameters.count = (gint)v;
if (v >= 0) {