diff options
author | Anteru <bitbucket@ca.sh13.net> | 2019-05-09 05:06:00 +0000 |
---|---|---|
committer | Anteru <bitbucket@ca.sh13.net> | 2019-05-09 05:06:00 +0000 |
commit | 9214e6844ecc2d80952d74270dfb2553f39b62ef (patch) | |
tree | e4ce600549999523cd1fa8bf3c21d6b69dc7c33f /pygments/lexer.py | |
parent | a2393211ec794273444917a0f11930ce11a54c50 (diff) | |
parent | 40f1162fc2f17f5f860baab921effd9035369895 (diff) | |
download | pygments-git-9214e6844ecc2d80952d74270dfb2553f39b62ef.tar.gz |
Merged in SylvainCorlay/pygments-main/css-variables (pull request #814)
Allow for CSS variable in pygments stylesheets
Approved-by: Anteru <bitbucket@ca.sh13.net>
Diffstat (limited to 'pygments/lexer.py')
-rw-r--r-- | pygments/lexer.py | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/pygments/lexer.py b/pygments/lexer.py index 90905ba5..62d66318 100644 --- a/pygments/lexer.py +++ b/pygments/lexer.py @@ -639,14 +639,20 @@ class RegexLexer(Lexer): if isinstance(new_state, tuple): for state in new_state: if state == '#pop': - statestack.pop() + if len(statestack) > 1: + statestack.pop() elif state == '#push': statestack.append(statestack[-1]) else: statestack.append(state) elif isinstance(new_state, int): - # pop - del statestack[new_state:] + # pop, but keep at least one state on the stack + # (random code leading to unexpected pops should + # not allow exceptions) + if abs(new_state) >= len(statestack): + del statestack[1:] + else: + del statestack[new_state:] elif new_state == '#push': statestack.append(statestack[-1]) else: @@ -724,14 +730,18 @@ class ExtendedRegexLexer(RegexLexer): if isinstance(new_state, tuple): for state in new_state: if state == '#pop': - ctx.stack.pop() + if len(ctx.stack) > 1: + ctx.stack.pop() elif state == '#push': ctx.stack.append(ctx.stack[-1]) else: ctx.stack.append(state) elif isinstance(new_state, int): - # pop - del ctx.stack[new_state:] + # see RegexLexer for why this check is made + if abs(new_state) >= len(ctx.stack): + del ctx.state[1:] + else: + del ctx.stack[new_state:] elif new_state == '#push': ctx.stack.append(ctx.stack[-1]) else: |