dbcli / pgcli

Postgres CLI with autocompletion and syntax highlighting
http://pgcli.com
BSD 3-Clause "New" or "Revised" License
12k stars 551 forks source link

Crash in vi mode #1226

Open jonashaag opened 3 years ago

jonashaag commented 3 years ago

Description

Pressed r to replace a single character in vi mode, got this:

Unhandled exception in event loop:
  File "/usr/lib/python3.8/asyncio/events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/eventloop/utils.py", line 72, in schedule
    func()
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 469, in redraw
    self._redraw()
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 536, in _redraw
    self.context.run(run_in_context)
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 522, in run_in_context
    self.renderer.render(self, self.layout)
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/renderer.py", line 629, in render
    layout.container.preferred_height(size.columns, size.rows).preferred,
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 325, in preferred_height
    dimensions = [
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 326, in <listcomp>
    c.preferred_height(width, max_available_height) for c in self._all_children
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 2598, in preferred_height
    return self.content.preferred_height(width, max_available_height)
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 1623, in preferred_height
    return self._merge_dimensions(
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 1651, in _merge_dimensions
    preferred = get_preferred()
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/layout/containers.py", line 1616, in preferred_content_height
    return self.content.preferred_height(
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/layout/controls.py", line 379, in preferred_height
    content = self.create_content(width, None)
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/layout/controls.py", line 392, in create_content
    fragments_with_mouse_handlers = self._get_formatted_text_cached()
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/layout/controls.py", line 358, in _get_formatted_text_cached
    return self._fragment_cache.get(
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/cache.py", line 41, in get
    value = getter_func()
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/layout/controls.py", line 359, in <lambda>
    get_app().render_counter, lambda: to_formatted_text(self.text, self.style)
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/formatted_text/base.py", line 78, in to_formatted_text
    return to_formatted_text(value(), style=style)
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/prompt_toolkit/formatted_text/base.py", line 78, in to_formatted_text
    return to_formatted_text(value(), style=style)
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/pgcli/pgtoolbar.py", line 41, in get_toolbar_tokens
    ("class:bottom-toolbar", "[F4] Vi-mode (" + _get_vi_mode() + ")")
  File "/home/jo/.venvs/au/lib/python3.8/site-packages/pgcli/pgtoolbar.py", line 6, in _get_vi_mode
    return {

Exception <InputMode.REPLACE_SINGLE: 'vi-replace-single'>

Your environment

pglci 3.0.0, Manjaro Linux (but installed with pip)

absl-py==0.11.0
appdirs==1.4.4
argon2-cffi==20.1.0
astunparse==1.6.3
async-generator==1.10
attrs==20.2.0
backcall==0.2.0
bleach==3.2.1
botocore==1.19.22
cached-property==1.5.2
cachetools==4.1.1
certifi==2020.6.20
cffi==1.14.3
chardet==3.0.4
cli-helpers==2.1.0
click==7.1.2
cloudpickle==1.6.0
colorama==0.4.3
configobj==5.0.6
contexttimer==0.3.3
cycler==0.10.0
Cython==0.29.21
dataclasses==0.6
decorator==4.4.2
defusedxml==0.6.0
deprecation==2.1.0
docutils==0.15.2
einops==0.3.0
entrypoints==0.3
filetype==1.0.7
flake8==3.8.4
flatbuffers==1.12
fsspec==0.8.4
future==0.18.2
gast==0.3.3
gobject==0.1.0
greenlet==0.4.17
grpcio==1.32.0
h5py==2.10.0
humanize==3.1.0
idna==2.10
importlib-resources==2.0.1
iniconfig==1.1.1
ipykernel==5.3.4
ipython==7.19.0
ipython-genutils==0.2.0
ipywidgets==7.5.1
jedi==0.17.2
Jinja2==2.11.2
jmespath==0.10.0
joblib==0.17.0
jsonschema==3.2.0
julius==0.2.0
jupyter-client==6.1.7
jupyter-core==4.6.3
jupyterlab-pygments==0.1.2
Keras-Preprocessing==1.1.2
kiwisolver==1.3.1
librosa==0.8.0
llvmlite==0.34.0
loguru==0.5.3
lxml==4.6.1
Markdown==3.3.3
MarkupSafe==1.1.1
matplotlib==3.3.2
mccabe==0.6.1
meinheld==1.0.2
mir-eval==0.6
mistune==0.8.4
mock==4.0.2
nbclient==0.5.1
nbconvert==6.0.7
nbformat==5.0.8
nest-asyncio==1.4.2
nose==1.3.7
notebook==6.1.4
numba==0.51.2
numpy==1.19.4
oauthlib==3.1.0
omegaconf==2.0.5
onnxruntime==1.5.2
opt-einsum==3.3.0
packaging==20.4
pandas==1.1.4
pandocfilters==1.4.3
panns-inference==0.0.7
parso==0.7.1
pb-bss-eval==0.0.2
pexpect==4.8.0
pgcli==3.0.0
pgspecial==1.11.10
pickleshare==0.7.5
Pillow==8.0.1
pluggy==0.13.1
pooch==1.2.0
portalocker==2.0.0
prometheus-client==0.8.0
prompt-toolkit==3.0.8
protobuf==3.13.0
psutil==5.7.3
psycopg2==2.8.6
psycopg2-binary==2.8.6
ptpython==3.0.7
ptyprocess==0.6.0
py==1.9.0
py-spy==0.3.3
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycairo==1.20.0
pycodestyle==2.6.0
pycparser==2.20
pyflakes==2.2.0
Pygments==2.7.2
PyGObject==3.38.0
pyloudnorm==0.1.0
Pympler==0.9
pyparsing==2.4.7
pyrasite==2.0
pyrsistent==0.17.3
pystoi==0.3.3
pytest==6.1.2
python-dateutil==2.8.1
pytz==2020.4
PyYAML==5.3.1
pyzmq==19.0.2
regex==2020.10.28
requests==2.24.0
requests-oauthlib==1.3.0
resampy==0.2.2
rsa==4.5
s3transfer==0.3.3
sacrebleu==1.4.14
scikit-learn==0.23.2
scipy==1.5.3
seaborn==0.11.0
Send2Trash==1.5.0
setproctitle==1.2
six==1.15.0
# Editable install with no version control (soundfile==0.10.3.post1)
-e /home/jo/.venvs/au/lib/python3.8/site-packages
SQLAlchemy==1.3.20
sqlparse==0.3.1
tabulate==0.8.7
termcolor==1.1.0
terminado==0.9.1
terminaltables==3.1.0
testpath==0.4.4
threadpoolctl==2.1.0
toml==0.10.2
tornado==6.1
tqdm==4.51.0
traitlets==5.0.5
typing-extensions==3.7.4.3
ujson==4.0.1
urllib3==1.25.11
urwid==2.1.2
wcwidth==0.2.5
webencodings==0.5.1
Werkzeug==1.0.1
widgetsnbextension==3.5.1
wrapt==1.12.1
gfrlv commented 3 years ago

It should be fixed in the master branch (not yet released). You can try out the fix with

pip3 install git+https://github.com/dbcli/pgcli@master