You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
189 lines
7.1 KiB
189 lines
7.1 KiB
6 years ago
|
from __future__ import unicode_literals
|
||
|
|
||
|
from prompt_toolkit.styles import Style, merge_styles
|
||
|
from prompt_toolkit.styles.pygments import style_from_pygments_cls
|
||
|
from prompt_toolkit.utils import is_windows, is_conemu_ansi, is_windows_vt100_supported
|
||
|
from pygments.styles import get_style_by_name, get_all_styles
|
||
|
|
||
|
__all__ = (
|
||
|
'get_all_code_styles',
|
||
|
'get_all_ui_styles',
|
||
|
'generate_style',
|
||
|
)
|
||
|
|
||
|
|
||
|
def get_all_code_styles():
|
||
|
"""
|
||
|
Return a mapping from style names to their classes.
|
||
|
"""
|
||
|
result = dict((name, style_from_pygments_cls(get_style_by_name(name))) for name in get_all_styles())
|
||
|
result['win32'] = Style.from_dict(win32_code_style)
|
||
|
return result
|
||
|
|
||
|
|
||
|
def get_all_ui_styles():
|
||
|
"""
|
||
|
Return a dict mapping {ui_style_name -> style_dict}.
|
||
|
"""
|
||
|
return {
|
||
|
'default': Style.from_dict(default_ui_style),
|
||
|
'blue': Style.from_dict(blue_ui_style),
|
||
|
}
|
||
|
|
||
|
|
||
|
def generate_style(python_style, ui_style):
|
||
|
"""
|
||
|
Generate Pygments Style class from two dictionaries
|
||
|
containing style rules.
|
||
|
"""
|
||
|
return merge_styles([
|
||
|
python_style,
|
||
|
ui_style
|
||
|
])
|
||
|
|
||
|
|
||
|
# Code style for Windows consoles. They support only 16 colors,
|
||
|
# so we choose a combination that displays nicely.
|
||
|
win32_code_style = {
|
||
|
'pygments.comment': "#00ff00",
|
||
|
'pygments.keyword': '#44ff44',
|
||
|
'pygments.number': '',
|
||
|
'pygments.operator': '',
|
||
|
'pygments.string': '#ff44ff',
|
||
|
|
||
|
'pygments.name': '',
|
||
|
'pygments.name.decorator': '#ff4444',
|
||
|
'pygments.name.class': '#ff4444',
|
||
|
'pygments.name.function': '#ff4444',
|
||
|
'pygments.name.builtin': '#ff4444',
|
||
|
|
||
|
'pygments.name.attribute': '',
|
||
|
'pygments.name.constant': '',
|
||
|
'pygments.name.entity': '',
|
||
|
'pygments.name.exception': '',
|
||
|
'pygments.name.label': '',
|
||
|
'pygments.name.namespace': '',
|
||
|
'pygments.name.tag': '',
|
||
|
'pygments.name.variable': '',
|
||
|
}
|
||
|
|
||
|
|
||
|
default_ui_style = {
|
||
|
'control-character': 'ansiblue',
|
||
|
|
||
|
# Classic prompt.
|
||
|
'prompt': 'bold',
|
||
|
'prompt.dots': 'noinherit',
|
||
|
|
||
|
# (IPython <5.0) Prompt: "In [1]:"
|
||
|
'in': 'bold #008800',
|
||
|
'in.number': '',
|
||
|
|
||
|
# Return value.
|
||
|
'out': '#ff0000',
|
||
|
'out.number': '#ff0000',
|
||
|
|
||
|
# Separator between windows. (Used above docstring.)
|
||
|
'separator': '#bbbbbb',
|
||
|
|
||
|
# System toolbar
|
||
|
'system-toolbar': '#22aaaa noinherit',
|
||
|
|
||
|
# "arg" toolbar.
|
||
|
'arg-toolbar': '#22aaaa noinherit',
|
||
|
'arg-toolbar.text': 'noinherit',
|
||
|
|
||
|
# Signature toolbar.
|
||
|
'signature-toolbar': 'bg:#44bbbb #000000',
|
||
|
'signature-toolbar.currentname': 'bg:#008888 #ffffff bold',
|
||
|
'signature-toolbar.operator': '#000000 bold',
|
||
|
|
||
|
'docstring': '#888888',
|
||
|
|
||
|
# Validation toolbar.
|
||
|
'validation-toolbar': 'bg:#440000 #aaaaaa',
|
||
|
|
||
|
# Status toolbar.
|
||
|
'status-toolbar': 'bg:#222222 #aaaaaa',
|
||
|
'status-toolbar.title': 'underline',
|
||
|
'status-toolbar.inputmode': 'bg:#222222 #ffffaa',
|
||
|
'status-toolbar.key': 'bg:#000000 #888888',
|
||
|
'status-toolbar.pastemodeon': 'bg:#aa4444 #ffffff',
|
||
|
'status-toolbar.pythonversion': 'bg:#222222 #ffffff bold',
|
||
|
'status-toolbar paste-mode-on': 'bg:#aa4444 #ffffff',
|
||
|
'record': 'bg:#884444 white',
|
||
|
'status-toolbar.input-mode': '#ffff44',
|
||
|
|
||
|
# The options sidebar.
|
||
|
'sidebar': 'bg:#bbbbbb #000000',
|
||
|
'sidebar.title': 'bg:#668866 #ffffff',
|
||
|
'sidebar.label': 'bg:#bbbbbb #222222',
|
||
|
'sidebar.status': 'bg:#dddddd #000011',
|
||
|
'sidebar.label selected': 'bg:#222222 #eeeeee',
|
||
|
'sidebar.status selected': 'bg:#444444 #ffffff bold',
|
||
|
|
||
|
'sidebar.separator': 'underline',
|
||
|
'sidebar.key': 'bg:#bbddbb #000000 bold',
|
||
|
'sidebar.key.description': 'bg:#bbbbbb #000000',
|
||
|
'sidebar.helptext': 'bg:#fdf6e3 #000011',
|
||
|
|
||
|
# # Styling for the history layout.
|
||
|
# history.line: '',
|
||
|
# history.line.selected: 'bg:#008800 #000000',
|
||
|
# history.line.current: 'bg:#ffffff #000000',
|
||
|
# history.line.selected.current: 'bg:#88ff88 #000000',
|
||
|
# history.existinginput: '#888888',
|
||
|
|
||
|
# Help Window.
|
||
|
'window-border': '#aaaaaa',
|
||
|
'window-title': 'bg:#bbbbbb #000000',
|
||
|
|
||
|
# Meta-enter message.
|
||
|
'accept-message': 'bg:#ffff88 #444444',
|
||
|
|
||
|
# Exit confirmation.
|
||
|
'exit-confirmation': 'bg:#884444 #ffffff',
|
||
|
}
|
||
|
|
||
|
|
||
|
# Some changes to get a bit more contrast on Windows consoles.
|
||
|
# (They only support 16 colors.)
|
||
|
if is_windows() and not is_conemu_ansi() and not is_windows_vt100_supported():
|
||
|
default_ui_style.update({
|
||
|
'sidebar.title': 'bg:#00ff00 #ffffff',
|
||
|
'exitconfirmation': 'bg:#ff4444 #ffffff',
|
||
|
'toolbar.validation': 'bg:#ff4444 #ffffff',
|
||
|
|
||
|
'menu.completions.completion': 'bg:#ffffff #000000',
|
||
|
'menu.completions.completion.current': 'bg:#aaaaaa #000000',
|
||
|
})
|
||
|
|
||
|
|
||
|
blue_ui_style = {}
|
||
|
blue_ui_style.update(default_ui_style)
|
||
|
#blue_ui_style.update({
|
||
|
# # Line numbers.
|
||
|
# Token.LineNumber: '#aa6666',
|
||
|
#
|
||
|
# # Highlighting of search matches in document.
|
||
|
# Token.SearchMatch: '#ffffff bg:#4444aa',
|
||
|
# Token.SearchMatch.Current: '#ffffff bg:#44aa44',
|
||
|
#
|
||
|
# # Highlighting of select text in document.
|
||
|
# Token.SelectedText: '#ffffff bg:#6666aa',
|
||
|
#
|
||
|
# # Completer toolbar.
|
||
|
# Token.Toolbar.Completions: 'bg:#44bbbb #000000',
|
||
|
# Token.Toolbar.Completions.Arrow: 'bg:#44bbbb #000000 bold',
|
||
|
# Token.Toolbar.Completions.Completion: 'bg:#44bbbb #000000',
|
||
|
# Token.Toolbar.Completions.Completion.Current: 'bg:#008888 #ffffff',
|
||
|
#
|
||
|
# # Completer menu.
|
||
|
# Token.Menu.Completions.Completion: 'bg:#44bbbb #000000',
|
||
|
# Token.Menu.Completions.Completion.Current: 'bg:#008888 #ffffff',
|
||
|
# Token.Menu.Completions.Meta: 'bg:#449999 #000000',
|
||
|
# Token.Menu.Completions.Meta.Current: 'bg:#00aaaa #000000',
|
||
|
# Token.Menu.Completions.ProgressBar: 'bg:#aaaaaa',
|
||
|
# Token.Menu.Completions.ProgressButton: 'bg:#000000',
|
||
|
#})
|