Exemple #1
0
 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()
Exemple #2
0
    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()
Exemple #3
0
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,