Spaces:
Sleeping
Sleeping
| """ | |
| The default styling. | |
| """ | |
| from __future__ import annotations | |
| from prompt_toolkit.cache import memoized | |
| from .base import ANSI_COLOR_NAMES, BaseStyle | |
| from .named_colors import NAMED_COLORS | |
| from .style import Style, merge_styles | |
| __all__ = [ | |
| "default_ui_style", | |
| "default_pygments_style", | |
| ] | |
| #: Default styling. Mapping from classnames to their style definition. | |
| PROMPT_TOOLKIT_STYLE = [ | |
| # Highlighting of search matches in document. | |
| ("search", "bg:ansibrightyellow ansiblack"), | |
| ("search.current", ""), | |
| # Incremental search. | |
| ("incsearch", ""), | |
| ("incsearch.current", "reverse"), | |
| # Highlighting of select text in document. | |
| ("selected", "reverse"), | |
| ("cursor-column", "bg:#dddddd"), | |
| ("cursor-line", "underline"), | |
| ("color-column", "bg:#ccaacc"), | |
| # Highlighting of matching brackets. | |
| ("matching-bracket", ""), | |
| ("matching-bracket.other", "#000000 bg:#aacccc"), | |
| ("matching-bracket.cursor", "#ff8888 bg:#880000"), | |
| # Styling of other cursors, in case of block editing. | |
| ("multiple-cursors", "#000000 bg:#ccccaa"), | |
| # Line numbers. | |
| ("line-number", "#888888"), | |
| ("line-number.current", "bold"), | |
| ("tilde", "#8888ff"), | |
| # Default prompt. | |
| ("prompt", ""), | |
| ("prompt.arg", "noinherit"), | |
| ("prompt.arg.text", ""), | |
| ("prompt.search", "noinherit"), | |
| ("prompt.search.text", ""), | |
| # Search toolbar. | |
| ("search-toolbar", "bold"), | |
| ("search-toolbar.text", "nobold"), | |
| # System toolbar | |
| ("system-toolbar", "bold"), | |
| ("system-toolbar.text", "nobold"), | |
| # "arg" toolbar. | |
| ("arg-toolbar", "bold"), | |
| ("arg-toolbar.text", "nobold"), | |
| # Validation toolbar. | |
| ("validation-toolbar", "bg:#550000 #ffffff"), | |
| ("window-too-small", "bg:#550000 #ffffff"), | |
| # Completions toolbar. | |
| ("completion-toolbar", "bg:#bbbbbb #000000"), | |
| ("completion-toolbar.arrow", "bg:#bbbbbb #000000 bold"), | |
| ("completion-toolbar.completion", "bg:#bbbbbb #000000"), | |
| ("completion-toolbar.completion.current", "bg:#444444 #ffffff"), | |
| # Completions menu. | |
| ("completion-menu", "bg:#bbbbbb #000000"), | |
| ("completion-menu.completion", ""), | |
| # (Note: for the current completion, we use 'reverse' on top of fg/bg | |
| # colors. This is to have proper rendering with NO_COLOR=1). | |
| ("completion-menu.completion.current", "fg:#888888 bg:#ffffff reverse"), | |
| ("completion-menu.meta.completion", "bg:#999999 #000000"), | |
| ("completion-menu.meta.completion.current", "bg:#aaaaaa #000000"), | |
| ("completion-menu.multi-column-meta", "bg:#aaaaaa #000000"), | |
| # Fuzzy matches in completion menu (for FuzzyCompleter). | |
| ("completion-menu.completion fuzzymatch.outside", "fg:#444444"), | |
| ("completion-menu.completion fuzzymatch.inside", "bold"), | |
| ("completion-menu.completion fuzzymatch.inside.character", "underline"), | |
| ("completion-menu.completion.current fuzzymatch.outside", "fg:default"), | |
| ("completion-menu.completion.current fuzzymatch.inside", "nobold"), | |
| # Styling of readline-like completions. | |
| ("readline-like-completions", ""), | |
| ("readline-like-completions.completion", ""), | |
| ("readline-like-completions.completion fuzzymatch.outside", "#888888"), | |
| ("readline-like-completions.completion fuzzymatch.inside", ""), | |
| ("readline-like-completions.completion fuzzymatch.inside.character", "underline"), | |
| # Scrollbars. | |
| ("scrollbar.background", "bg:#aaaaaa"), | |
| ("scrollbar.button", "bg:#444444"), | |
| ("scrollbar.arrow", "noinherit bold"), | |
| # Start/end of scrollbars. Adding 'underline' here provides a nice little | |
| # detail to the progress bar, but it doesn't look good on all terminals. | |
| # ('scrollbar.start', 'underline #ffffff'), | |
| # ('scrollbar.end', 'underline #000000'), | |
| # Auto suggestion text. | |
| ("auto-suggestion", "#666666"), | |
| # Trailing whitespace and tabs. | |
| ("trailing-whitespace", "#999999"), | |
| ("tab", "#999999"), | |
| # When Control-C/D has been pressed. Grayed. | |
| ("aborting", "#888888 bg:default noreverse noitalic nounderline noblink"), | |
| ("exiting", "#888888 bg:default noreverse noitalic nounderline noblink"), | |
| # Entering a Vi digraph. | |
| ("digraph", "#4444ff"), | |
| # Control characters, like ^C, ^X. | |
| ("control-character", "ansiblue"), | |
| # Non-breaking space. | |
| ("nbsp", "underline ansiyellow"), | |
| # Default styling of HTML elements. | |
| ("i", "italic"), | |
| ("u", "underline"), | |
| ("s", "strike"), | |
| ("b", "bold"), | |
| ("em", "italic"), | |
| ("strong", "bold"), | |
| ("del", "strike"), | |
| ("hidden", "hidden"), | |
| # It should be possible to use the style names in HTML. | |
| # <reverse>...</reverse> or <noreverse>...</noreverse>. | |
| ("italic", "italic"), | |
| ("underline", "underline"), | |
| ("strike", "strike"), | |
| ("bold", "bold"), | |
| ("reverse", "reverse"), | |
| ("noitalic", "noitalic"), | |
| ("nounderline", "nounderline"), | |
| ("nostrike", "nostrike"), | |
| ("nobold", "nobold"), | |
| ("noreverse", "noreverse"), | |
| # Prompt bottom toolbar | |
| ("bottom-toolbar", "reverse"), | |
| ] | |
| # Style that will turn for instance the class 'red' into 'red'. | |
| COLORS_STYLE = [(name, "fg:" + name) for name in ANSI_COLOR_NAMES] + [ | |
| (name.lower(), "fg:" + name) for name in NAMED_COLORS | |
| ] | |
| WIDGETS_STYLE = [ | |
| # Dialog windows. | |
| ("dialog", "bg:#4444ff"), | |
| ("dialog.body", "bg:#ffffff #000000"), | |
| ("dialog.body text-area", "bg:#cccccc"), | |
| ("dialog.body text-area last-line", "underline"), | |
| ("dialog frame.label", "#ff0000 bold"), | |
| # Scrollbars in dialogs. | |
| ("dialog.body scrollbar.background", ""), | |
| ("dialog.body scrollbar.button", "bg:#000000"), | |
| ("dialog.body scrollbar.arrow", ""), | |
| ("dialog.body scrollbar.start", "nounderline"), | |
| ("dialog.body scrollbar.end", "nounderline"), | |
| # Buttons. | |
| ("button", ""), | |
| ("button.arrow", "bold"), | |
| ("button.focused", "bg:#aa0000 #ffffff"), | |
| # Menu bars. | |
| ("menu-bar", "bg:#aaaaaa #000000"), | |
| ("menu-bar.selected-item", "bg:#ffffff #000000"), | |
| ("menu", "bg:#888888 #ffffff"), | |
| ("menu.border", "#aaaaaa"), | |
| ("menu.border shadow", "#444444"), | |
| # Shadows. | |
| ("dialog shadow", "bg:#000088"), | |
| ("dialog.body shadow", "bg:#aaaaaa"), | |
| ("progress-bar", "bg:#000088"), | |
| ("progress-bar.used", "bg:#ff0000"), | |
| ] | |
| # The default Pygments style, include this by default in case a Pygments lexer | |
| # is used. | |
| PYGMENTS_DEFAULT_STYLE = { | |
| "pygments.whitespace": "#bbbbbb", | |
| "pygments.comment": "italic #408080", | |
| "pygments.comment.preproc": "noitalic #bc7a00", | |
| "pygments.keyword": "bold #008000", | |
| "pygments.keyword.pseudo": "nobold", | |
| "pygments.keyword.type": "nobold #b00040", | |
| "pygments.operator": "#666666", | |
| "pygments.operator.word": "bold #aa22ff", | |
| "pygments.name.builtin": "#008000", | |
| "pygments.name.function": "#0000ff", | |
| "pygments.name.class": "bold #0000ff", | |
| "pygments.name.namespace": "bold #0000ff", | |
| "pygments.name.exception": "bold #d2413a", | |
| "pygments.name.variable": "#19177c", | |
| "pygments.name.constant": "#880000", | |
| "pygments.name.label": "#a0a000", | |
| "pygments.name.entity": "bold #999999", | |
| "pygments.name.attribute": "#7d9029", | |
| "pygments.name.tag": "bold #008000", | |
| "pygments.name.decorator": "#aa22ff", | |
| # Note: In Pygments, Token.String is an alias for Token.Literal.String, | |
| # and Token.Number as an alias for Token.Literal.Number. | |
| "pygments.literal.string": "#ba2121", | |
| "pygments.literal.string.doc": "italic", | |
| "pygments.literal.string.interpol": "bold #bb6688", | |
| "pygments.literal.string.escape": "bold #bb6622", | |
| "pygments.literal.string.regex": "#bb6688", | |
| "pygments.literal.string.symbol": "#19177c", | |
| "pygments.literal.string.other": "#008000", | |
| "pygments.literal.number": "#666666", | |
| "pygments.generic.heading": "bold #000080", | |
| "pygments.generic.subheading": "bold #800080", | |
| "pygments.generic.deleted": "#a00000", | |
| "pygments.generic.inserted": "#00a000", | |
| "pygments.generic.error": "#ff0000", | |
| "pygments.generic.emph": "italic", | |
| "pygments.generic.strong": "bold", | |
| "pygments.generic.prompt": "bold #000080", | |
| "pygments.generic.output": "#888", | |
| "pygments.generic.traceback": "#04d", | |
| "pygments.error": "border:#ff0000", | |
| } | |
| def default_ui_style() -> BaseStyle: | |
| """ | |
| Create a default `Style` object. | |
| """ | |
| return merge_styles( | |
| [ | |
| Style(PROMPT_TOOLKIT_STYLE), | |
| Style(COLORS_STYLE), | |
| Style(WIDGETS_STYLE), | |
| ] | |
| ) | |
| def default_pygments_style() -> Style: | |
| """ | |
| Create a `Style` object that contains the default Pygments style. | |
| """ | |
| return Style.from_dict(PYGMENTS_DEFAULT_STYLE) | |