def style_name(self, value): if self._style_name == value: return if value not in STYLES: try: # loading style dynamically pygments_style_by_name(value) except Exception: print( "Could not find style {0!r}, using default".format(value), file=sys.stderr, ) value = "default" builtins.__xonsh__.env["XONSH_COLOR_STYLE"] = value cmap = STYLES[value] if value == "default": self._smap = XONSH_BASE_STYLE.copy() else: try: self._smap = get_style_by_name(value)().styles.copy() except (ImportError, pygments.util.ClassNotFound): self._smap = XONSH_BASE_STYLE.copy() compound = CompoundColorMap(ChainMap(self.trap, cmap, PTK_STYLE, self._smap)) self.styles = ChainMap(self.trap, cmap, PTK_STYLE, self._smap, compound) self._style_name = value # Convert new ansicolor names to old PTK1 names # Can be remvoed when PTK1 support is dropped. if builtins.__xonsh__.shell.shell_type != "prompt_toolkit2": for smap in [self.trap, cmap, PTK_STYLE, self._smap]: smap.update(ansicolors_to_ptk1_names(smap)) if ON_WINDOWS and "prompt_toolkit" in builtins.__xonsh__.shell.shell_type: self.enhance_colors_for_cmd_exe()
def style_name(self, value): if self._style_name == value: return if value not in STYLES: try: # loading style dynamically pygments_style_by_name(value) except Exception: print( "Could not find style {0!r}, using default".format(value), file=sys.stderr, ) value = "default" builtins.__xonsh__.env["XONSH_COLOR_STYLE"] = value cmap = STYLES[value] if value == "default": self._smap = XONSH_BASE_STYLE.copy() else: try: style_obj = get_style_by_name(value)() self._smap = style_obj.styles.copy() self.highlight_color = style_obj.highlight_color self.background_color = style_obj.background_color except (ImportError, pygments.util.ClassNotFound): self._smap = XONSH_BASE_STYLE.copy() compound = CompoundColorMap(ChainMap(self.trap, cmap, PTK_STYLE, self._smap)) self.styles = ChainMap(self.trap, cmap, PTK_STYLE, self._smap, compound) self._style_name = value for file_type, xonsh_color in builtins.__xonsh__.env.get( "LS_COLORS", {} ).items(): color_token = color_token_by_name(xonsh_color, self.styles) file_color_tokens[file_type] = color_token # Convert new ansicolor names to old PTK1 names # Can be remvoed when PTK1 support is dropped. if ( builtins.__xonsh__.shell.shell_type != "prompt_toolkit2" and pygments_version_info() and pygments_version_info() < (2, 4, 0) ): for smap in [self.trap, cmap, PTK_STYLE, self._smap]: smap.update(ansicolors_to_ptk1_names(smap)) if ON_WINDOWS and "prompt_toolkit" in builtins.__xonsh__.shell.shell_type: self.enhance_colors_for_cmd_exe()
Token = _TokenType() events.transmogrify("on_ptk_create", "LoadEvent") events.doc( "on_ptk_create", """ on_ptk_create(prompter: Prompter, history: PromptToolkitHistory, completer: PromptToolkitCompleter, bindings: KeyBindingManager) -> Fired after prompt toolkit has been initialized """, ) # Convert new ansicolor names to names # understood by PTK1 DEFAULT_STYLE_DICT = LazyObject( lambda: ansicolors_to_ptk1_names(_DEFAULT_STYLE_DICT), globals(), "DEFAULT_STYLE_DICT", ) class PromptToolkitShell(BaseShell): """The xonsh shell.""" def __init__(self, **kwargs): super().__init__(**kwargs) if ON_WINDOWS: winutils.enable_virtual_terminal_processing() self._first_prompt = True self.prompter = Prompter() self.history = PromptToolkitHistory() self.pt_completer = PromptToolkitCompleter(self.completer, self.ctx,