1
0
Fork 0
litecli/litecli/clibuffer.py
Daniel Baumann 0912fc1528
Adding upstream version 1.5.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-02-09 17:37:21 +01:00

40 lines
1.2 KiB
Python

from __future__ import unicode_literals
from prompt_toolkit.enums import DEFAULT_BUFFER
from prompt_toolkit.filters import Condition
from prompt_toolkit.application import get_app
def cli_is_multiline(cli):
@Condition
def cond():
doc = get_app().layout.get_buffer_by_name(DEFAULT_BUFFER).document
if not cli.multi_line:
return False
else:
return not _multiline_exception(doc.text)
return cond
def _multiline_exception(text):
orig = text
text = text.strip()
# Multi-statement favorite query is a special case. Because there will
# be a semicolon separating statements, we can't consider semicolon an
# EOL. Let's consider an empty line an EOL instead.
if text.startswith("\\fs"):
return orig.endswith("\n")
return (
text.startswith("\\") # Special Command
or text.endswith(";") # Ended with a semi-colon
or text.endswith("\\g") # Ended with \g
or text.endswith("\\G") # Ended with \G
or (text == "exit") # Exit doesn't need semi-colon
or (text == "quit") # Quit doesn't need semi-colon
or (text == ":q") # To all the vim fans out there
or (text == "") # Just a plain enter without any text
)