1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
#!/usr/bin/env python
"""
Demonstration of a custom completer class and the possibility of styling
completions independently.
"""
from prompt_toolkit.completion import Completer, Completion
from prompt_toolkit.output.color_depth import ColorDepth
from prompt_toolkit.shortcuts import CompleteStyle, prompt
colors = [
"red",
"blue",
"green",
"orange",
"purple",
"yellow",
"cyan",
"magenta",
"pink",
]
class ColorCompleter(Completer):
def get_completions(self, document, complete_event):
word = document.get_word_before_cursor()
for color in colors:
if color.startswith(word):
yield Completion(
color,
start_position=-len(word),
style="fg:" + color,
selected_style="fg:white bg:" + color,
)
def main():
# Simple completion menu.
print("(The completion menu displays colors.)")
prompt("Type a color: ", completer=ColorCompleter())
# Multi-column menu.
prompt(
"Type a color: ",
completer=ColorCompleter(),
complete_style=CompleteStyle.MULTI_COLUMN,
)
# Readline-like
prompt(
"Type a color: ",
completer=ColorCompleter(),
complete_style=CompleteStyle.READLINE_LIKE,
)
# Prompt with true color output.
message = [
("#cc2244", "T"),
("#bb4444", "r"),
("#996644", "u"),
("#cc8844", "e "),
("#ccaa44", "C"),
("#bbaa44", "o"),
("#99aa44", "l"),
("#778844", "o"),
("#55aa44", "r "),
("#33aa44", "p"),
("#11aa44", "r"),
("#11aa66", "o"),
("#11aa88", "m"),
("#11aaaa", "p"),
("#11aacc", "t"),
("#11aaee", ": "),
]
prompt(message, completer=ColorCompleter(), color_depth=ColorDepth.TRUE_COLOR)
if __name__ == "__main__":
main()
|