diff --git a/lslopt/lsloptimizer.py b/lslopt/lsloptimizer.py index cb48459..a76569b 100644 --- a/lslopt/lsloptimizer.py +++ b/lslopt/lsloptimizer.py @@ -196,6 +196,9 @@ class optimizer(object): else: # Call it val = self.functions[code[2]][2](*tuple(x[2] for x in code[3])) + if not self.foldtabs and isinstance(val, unicode) and '\t' in val: + warning('WARNING: Tab in function result and foldtabs option not used.') + return code[:] = [CONSTANT, code[1], val] return @@ -360,6 +363,8 @@ class optimizer(object): if 'optimize' not in options: return + self.foldtabs = 'foldtabs' in options + # TODO: Add option to handle local jumps properly. self.functions = functions diff --git a/main.py b/main.py index 8494c9e..92678d5 100644 --- a/main.py +++ b/main.py @@ -35,7 +35,7 @@ Options (* means not implemented): directives like: # 123 "filename". optimize Runs the optimizer. optsigns Optimize signs and float as int. - * foldtabs Tabs can't be copy-pasted, so they aren't optimized by + foldtabs Tabs can't be copy-pasted, so they aren't optimized by default. But with support from the viewer, they can be folded too and make it to the uploaded source. This option overrides that check, enabling optimization of