diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-11-25 14:02:30 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-11-25 14:02:30 +0100 |
commit | 036cc00ecdb8908f3ac54e8cc9fef006bbd8095e (patch) | |
tree | 0f702dbdc2c2b076517328280b7cb1a8f375a298 /parser.cpp | |
parent | d840485e08d2dc395f57502eba845ac6f2c16d5c (diff) | |
download | sciteco-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
Diffstat (limited to 'parser.cpp')
-rw-r--r-- | parser.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -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) { |