diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-05 04:45:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-05 04:45:14 +0000 |
commit | 437643bd908d99924e3003db4d9d3718d9df5813 (patch) | |
tree | 9752c4e8ebd3ae23f7a586066a874bd4418feeaa /src/prompt_toolkit/buffer.py | |
parent | Adding debian version 3.0.43-2. (diff) | |
download | prompt-toolkit-437643bd908d99924e3003db4d9d3718d9df5813.tar.xz prompt-toolkit-437643bd908d99924e3003db4d9d3718d9df5813.zip |
Merging upstream version 3.0.46.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/prompt_toolkit/buffer.py')
-rw-r--r-- | src/prompt_toolkit/buffer.py | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/prompt_toolkit/buffer.py b/src/prompt_toolkit/buffer.py index 100ca78..f5847d4 100644 --- a/src/prompt_toolkit/buffer.py +++ b/src/prompt_toolkit/buffer.py @@ -2,6 +2,7 @@ Data structures for the Buffer. It holds the text, cursor position, history, etc... """ + from __future__ import annotations import asyncio @@ -85,12 +86,7 @@ class CompletionState: self.complete_index = complete_index # Position in the `_completions` array. def __repr__(self) -> str: - return "{}({!r}, <{!r}> completions, index={!r})".format( - self.__class__.__name__, - self.original_document, - len(self.completions), - self.complete_index, - ) + return f"{self.__class__.__name__}({self.original_document!r}, <{len(self.completions)!r}> completions, index={self.complete_index!r})" def go_to_index(self, index: int | None) -> None: """ @@ -149,12 +145,7 @@ class YankNthArgState: self.n = n def __repr__(self) -> str: - return "{}(history_position={!r}, n={!r}, previous_inserted_word={!r})".format( - self.__class__.__name__, - self.history_position, - self.n, - self.previous_inserted_word, - ) + return f"{self.__class__.__name__}(history_position={self.history_position!r}, n={self.n!r}, previous_inserted_word={self.previous_inserted_word!r})" BufferEventHandler = Callable[["Buffer"], None] @@ -188,6 +179,9 @@ class Buffer: In case of a `PromptSession` for instance, we want to keep the text, because we will exit the application, and only reset it during the next run. + :param max_number_of_completions: Never display more than this number of + completions, even when the completer can produce more (limited by + default to 10k for performance). Events: @@ -234,12 +228,13 @@ class Buffer: accept_handler: BufferAcceptHandler | None = None, read_only: FilterOrBool = False, multiline: FilterOrBool = True, + max_number_of_completions: int = 10000, on_text_changed: BufferEventHandler | None = None, on_text_insert: BufferEventHandler | None = None, on_cursor_position_changed: BufferEventHandler | None = None, on_completions_changed: BufferEventHandler | None = None, on_suggestion_set: BufferEventHandler | None = None, - ): + ) -> None: # Accept both filters and booleans as input. enable_history_search = to_filter(enable_history_search) complete_while_typing = to_filter(complete_while_typing) @@ -261,6 +256,7 @@ class Buffer: self.enable_history_search = enable_history_search self.read_only = read_only self.multiline = multiline + self.max_number_of_completions = max_number_of_completions # Text width. (For wrapping, used by the Vi 'gq' operator.) self.text_width = 0 @@ -1748,6 +1744,13 @@ class Buffer: # If the input text changes, abort. if not proceed(): break + + # Always stop at 10k completions. + if ( + len(complete_state.completions) + >= self.max_number_of_completions + ): + break finally: refresh_task.cancel() |