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
|
#!/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()
|