From fcf0496c93e48a7ba299fcfa634a52743d06c490 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Fri, 26 Jul 2013 11:12:36 +0200 Subject: fix tree walking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/featherweight.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/featherweight.py b/src/featherweight.py index b3b35eb..dace6fd 100755 --- a/src/featherweight.py +++ b/src/featherweight.py @@ -161,17 +161,20 @@ try: if backup is not None: select_stack[:] = backup elif buf.endswith('\033[1;5B'): - if select_stack[-1][0] is not None: - while len(select_stack) > 1: - cur = select_stack[-1][0] - curi = select_stack[-1][1] - par = select_stack[-2][0] - par = feeds if par is None else par['inner'] + while select_stack[-1][0] is not None: + cur = select_stack[-1][0] + curi = select_stack[-1][1] + par = select_stack[-2][0] + par = feeds if par is None else par['inner'] + if curi + 1 < len(par): select_stack.pop() - if curi + 1 < len(par): - select_stack.append((par[curi + 1], curi + 1)) - print_tree() - break + select_stack.append((par[curi + 1], curi + 1)) + print_tree() + break + elif select_stack[-2][0] is not None: + select_stack.pop() + else: + break elif buf.endswith('\033[C'): if select_stack[-1][0] is None: if len(feeds) > 0: -- cgit v1.2.3-70-g09d2