diff --git a/cli.py b/cli.py index 986ff8ab..939a450f 100755 --- a/cli.py +++ b/cli.py @@ -32,8 +32,9 @@ from prompt_toolkit.history import FileHistory from prompt_toolkit.styles import Style as PTStyle from prompt_toolkit.patch_stdout import patch_stdout from prompt_toolkit.application import Application -from prompt_toolkit.layout import Layout, HSplit, Window, FormattedTextControl +from prompt_toolkit.layout import Layout, HSplit, Window, FormattedTextControl, Float, FloatContainer from prompt_toolkit.layout.dimension import Dimension +from prompt_toolkit.layout.menus import CompletionsMenu from prompt_toolkit.widgets import TextArea from prompt_toolkit.key_binding import KeyBindings from prompt_toolkit.completion import Completer, Completion @@ -1654,13 +1655,22 @@ class HermesCLI: height=get_hint_height, ) - # Layout with dynamic spacer and input at bottom + # Layout with dynamic spacer, input at bottom, and floating completion menu layout = Layout( - HSplit([ - Window(height=0), # Expands to push everything to bottom - spacer, - input_area, - ]) + FloatContainer( + content=HSplit([ + Window(height=0), # Expands to push everything to bottom + spacer, + input_area, + ]), + floats=[ + Float( + xcursor=True, + ycursor=True, + content=CompletionsMenu(max_height=12, scroll_offset=1), + ) + ], + ) ) # Style for the application