summaryrefslogtreecommitdiffstats
path: root/src/prompt_toolkit/shortcuts/prompt.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/prompt_toolkit/shortcuts/prompt.py')
-rw-r--r--src/prompt_toolkit/shortcuts/prompt.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/prompt_toolkit/shortcuts/prompt.py b/src/prompt_toolkit/shortcuts/prompt.py
index 115d890..d0732bc 100644
--- a/src/prompt_toolkit/shortcuts/prompt.py
+++ b/src/prompt_toolkit/shortcuts/prompt.py
@@ -324,6 +324,10 @@ class PromptSession(Generic[_T]):
:param input: `Input` object. (Note that the preferred way to change the
input/output is by creating an `AppSession`.)
:param output: `Output` object.
+ :param interrupt_exception: The exception type that will be raised when
+ there is a keyboard interrupt (control-c keypress).
+ :param eof_exception: The exception type that will be raised when there is
+ an end-of-file/exit event (control-d keypress).
"""
_fields = (
@@ -410,6 +414,8 @@ class PromptSession(Generic[_T]):
refresh_interval: float = 0,
input: Input | None = None,
output: Output | None = None,
+ interrupt_exception: type[BaseException] = KeyboardInterrupt,
+ eof_exception: type[BaseException] = EOFError,
) -> None:
history = history or InMemoryHistory()
clipboard = clipboard or InMemoryClipboard()
@@ -459,6 +465,8 @@ class PromptSession(Generic[_T]):
self.reserve_space_for_menu = reserve_space_for_menu
self.tempfile_suffix = tempfile_suffix
self.tempfile = tempfile
+ self.interrupt_exception = interrupt_exception
+ self.eof_exception = eof_exception
# Create buffers, layout and Application.
self.history = history
@@ -811,7 +819,7 @@ class PromptSession(Generic[_T]):
@handle("<sigint>")
def _keyboard_interrupt(event: E) -> None:
"Abort when Control-C has been pressed."
- event.app.exit(exception=KeyboardInterrupt, style="class:aborting")
+ event.app.exit(exception=self.interrupt_exception(), style="class:aborting")
@Condition
def ctrl_d_condition() -> bool:
@@ -826,7 +834,7 @@ class PromptSession(Generic[_T]):
@handle("c-d", filter=ctrl_d_condition & default_focused)
def _eof(event: E) -> None:
"Exit when Control-D has been pressed."
- event.app.exit(exception=EOFError, style="class:exiting")
+ event.app.exit(exception=self.eof_exception(), style="class:exiting")
suspend_supported = Condition(suspend_to_background_supported)