Skip to content

Multiple tab completions triggers traceback #690

Open
@melund

Description

@melund

In xonsh we experience an issue where pressing tab many times for tab completions can trigger the following traceback (xonsh/xonsh#2730):

@scopatz can confirm that this also happens for Linux.

Unhandled exception in event loop:
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\eventloop\win32.py", line 102, in _run_task
    t()
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\eventloop\context.py", line 115, in new_func
    return func(*a, **kw)
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\application\application.py", line 548, in read_from_input
    self.key_processor.process_keys()
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\key_binding\key_processor.py", line 272, in process_keys
    self._process_coroutine.send(key_press)
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\key_binding\key_processor.py", line 179, in _process
    self._call_handler(matches[-1], key_sequence=buffer[:])
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\key_binding\key_processor.py", line 321, in _call_handler
    handler.call(event)
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\key_binding\key_bindings.py", line 78, in call
    return self.handler(event)
  File "C:\Users\mel\anaconda3\lib\site-packages\xonsh\ptk2\key_bindings.py", line 369, in generate_completions
    second_tab()
  File "C:\Users\mel\anaconda3\lib\site-packages\xonsh\ptk2\key_bindings.py", line 362, in second_tab
    b.complete_next()
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\buffer.py", line 758, in complete_next
    self.go_to_completion(index)
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\buffer.py", line 848, in go_to_completion
    new_text, new_cursor_position = state.new_text_and_position()
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\buffer.py", line 93, in new_text_and_position
    c = self.completions[self.complete_index]

Exception list index out of range

If I press only a few times followed by a ctrl-c I get slightly different traceback:

snail@sea ~\Documents\xo        ig_styles
$ not_a_thing.Traceback (most recent call last):
  File "C:\Users\mel\anaconda3\Scripts\xonsh-script.py", line 10, in <module>
    sys.exit(main())
  File "C:\Users\mel\anaconda3\lib\site-packages\xonsh\main.py", line 344, in main
    _failback_to_other_shells(args, err)
  File "C:\Users\mel\anaconda3\lib\site-packages\xonsh\main.py", line 313, in _failback_to_other_shells
    raise err
  File "C:\Users\mel\anaconda3\lib\site-packages\xonsh\main.py", line 342, in main
    return main_xonsh(args)
  File "C:\Users\mel\anaconda3\lib\site-packages\xonsh\main.py", line 368, in main_xonsh
    shell.shell.cmdloop()
  File "C:\Users\mel\anaconda3\lib\site-packages\xonsh\ptk2\shell.py", line 160, in cmdloop
    line = self.singleline(auto_suggest=auto_suggest)
  File "C:\Users\mel\anaconda3\lib\site-packages\xonsh\ptk2\shell.py", line 126, in singleline
    line = self.prompter.prompt(**prompt_args)
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\shortcuts\prompt.py", line 722, in prompt
    return run_sync()
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\shortcuts\prompt.py", line 706, in run_sync
    return self.app.run(inputhook=self.inputhook)
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\application\application.py", line 682, in run
    return run()
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\application\application.py", line 654, in run
    f = self.run_async(pre_run=pre_run)
  File "C:\Users\mel\anaconda3\lib\site-packages\prompt_toolkit\application\application.py", line 513, in run_async
    assert not self._is_running
AssertionError

We are using prompt_toolkit 2.0.3

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions