def test_format_prompt_with_broken_template(): for p in ('{user', '{user}{hostname'): assert partial_format_prompt(p) == p # '{{user' will be parsed to '{user' for p in ('{{user}', '{{user'): assert 'user' in partial_format_prompt(p)
def test_format_prompt_with_broken_template(): for p in ('{user', '{user}{hostname'): assert partial_format_prompt(p) == p # '{{user' will be parsed to '{user' for p in ('{{user}', '{{user'): assert 'user' in partial_format_prompt(p)
def test_format_prompt_with_broken_template(): for p in ('{user', '{user}{hostname'): assert_equal(partial_format_prompt(p), p) assert_equal(format_prompt(p), p) # '{{user' will be parsed to '{user' for p in ('{{user}', '{{user'): assert_in('user', partial_format_prompt(p)) assert_in('user', format_prompt(p))
def test_format_prompt_with_broken_template(): for p in ('{user', '{user}{hostname'): assert_equal(partial_format_prompt(p), p) assert_equal(format_prompt(p), p) # '{{user' will be parsed to '{user' for p in ('{{user}', '{{user'): assert_in('user', partial_format_prompt(p)) assert_in('user', format_prompt(p))
def prompt(self): """Obtains the current prompt string.""" global RL_LIB, RL_CAN_RESIZE if RL_CAN_RESIZE: # This is needed to support some system where line-wrapping doesn't # work. This is a bug in upstream Python, or possibly readline. RL_LIB.rl_reset_screen_size() #return super().prompt if self.need_more_lines: if self.mlprompt is None: try: self.mlprompt = multiline_prompt(curr=self._current_prompt) except Exception: # pylint: disable=broad-except print_exception() self.mlprompt = '<multiline prompt error> ' return self.mlprompt env = builtins.__xonsh_env__ # pylint: disable=no-member p = env.get('PROMPT') try: p = partial_format_prompt(p) except Exception: # pylint: disable=broad-except print_exception() p = partial_color_format(p, style=env.get('XONSH_COLOR_STYLE'), hide=True) self._current_prompt = p self.settitle() return p
def test_format_prompt_with_invalid_func(): def p(): foo = bar # raises exception return '{user}' assert_is_instance(partial_format_prompt(p), str) assert_is_instance(format_prompt(p), str)
def prompt(self): """Obtains the current prompt string.""" global RL_LIB, RL_CAN_RESIZE if RL_CAN_RESIZE: # This is needed to support some system where line-wrapping doesn't # work. This is a bug in upstream Python, or possibly readline. RL_LIB.rl_reset_screen_size() if self.need_more_lines: if self.mlprompt is None: try: self.mlprompt = multiline_prompt(curr=self._current_prompt) except Exception: # pylint: disable=broad-except print_exception() self.mlprompt = '<multiline prompt error> ' return self.mlprompt env = builtins.__xonsh_env__ # pylint: disable=no-member p = env.get('PROMPT') try: p = partial_format_prompt(p) except Exception: # pylint: disable=broad-except print_exception() hide = True if self._force_hide is None else self._force_hide p = ansi_partial_color_format(p, style=env.get('XONSH_COLOR_STYLE'), hide=hide) self._current_prompt = p self.settitle() return p
def test_format_prompt_with_broken_template_in_func(): for p in ( lambda: '{user', lambda: '{{user', lambda: '{{user}', lambda: '{user}{hostname', ): # '{{user' will be parsed to '{user' assert 'user' in partial_format_prompt(p)
def test_format_prompt_with_broken_template_in_func(): for p in ( lambda: '{user', lambda: '{{user', lambda: '{{user}', lambda: '{user}{hostname', ): # '{{user' will be parsed to '{user' assert 'user' in partial_format_prompt(p)
def prompt_tokens(self, cli): """Returns a list of (token, str) tuples for the current prompt.""" p = builtins.__xonsh_env__.get('PROMPT') try: p = partial_format_prompt(p) except Exception: # pylint: disable=broad-except print_exception() toks = partial_color_tokenize(p) self.settitle() return toks
def prompt_tokens(self, cli): """Returns a list of (token, str) tuples for the current prompt.""" p = builtins.__xonsh_env__.get('PROMPT') try: p = partial_format_prompt(p) except Exception: # pylint: disable=broad-except print_exception() toks = partial_color_tokenize(p) self.settitle() return toks
def rprompt_tokens(self, cli): """Returns a list of (token, str) tuples for the current right prompt. """ p = builtins.__xonsh_env__.get('RIGHT_PROMPT') if len(p) == 0: return [] try: p = partial_format_prompt(p) except Exception: # pylint: disable=broad-except print_exception() toks = partial_color_tokenize(p) return toks
def rprompt_tokens(self, cli): """Returns a list of (token, str) tuples for the current right prompt. """ p = builtins.__xonsh_env__.get('RIGHT_PROMPT') if len(p) == 0: return [] try: p = partial_format_prompt(p) except Exception: # pylint: disable=broad-except print_exception() toks = partial_color_tokenize(p) return toks
def rprompt_tokens(self, cli): """Returns a list of (token, str) tuples for the current right prompt. """ p = builtins.__xonsh_env__.get('RIGHT_PROMPT') # partial_format_prompt does handle empty strings properly, # but this avoids descending into it in the common case of # $RIGHT_PROMPT == ''. if isinstance(p, str) and len(p) == 0: return [] try: p = partial_format_prompt(p) except Exception: # pylint: disable=broad-except print_exception() toks = partial_color_tokenize(p) return toks
def rprompt_tokens(self, cli): """Returns a list of (token, str) tuples for the current right prompt. """ p = builtins.__xonsh_env__.get('RIGHT_PROMPT') # partial_format_prompt does handle empty strings properly, # but this avoids descending into it in the common case of # $RIGHT_PROMPT == ''. if isinstance(p, str) and len(p) == 0: return [] try: p = partial_format_prompt(p) except Exception: # pylint: disable=broad-except print_exception() toks = partial_color_tokenize(p) return toks
def test_format_prompt(): formatter_dict = { 'a_string': 'cat', 'none': (lambda: None), 'f': (lambda: 'wakka'), } cases = { 'my {a_string}': 'my cat', 'my {none}{a_string}': 'my cat', '{f} jawaka': 'wakka jawaka', } for p, exp in cases.items(): obs = format_prompt(template=p, formatter_dict=formatter_dict) yield assert_equal, exp, obs for p, exp in cases.items(): obs = partial_format_prompt(template=p, formatter_dict=formatter_dict) yield assert_equal, exp, obs
def test_format_prompt(): formatter_dict = { 'a_string': 'cat', 'none': (lambda: None), 'f': (lambda: 'wakka'), } cases = { 'my {a_string}': 'my cat', 'my {none}{a_string}': 'my cat', '{f} jawaka': 'wakka jawaka', } for p, exp in cases.items(): obs = format_prompt(template=p, formatter_dict=formatter_dict) yield assert_equal, exp, obs for p, exp in cases.items(): obs = partial_format_prompt(template=p, formatter_dict=formatter_dict) yield assert_equal, exp, obs
def settitle(self): """Sets terminal title.""" _ = self env = builtins.__xonsh_env__ # pylint: disable=no-member term = env.get('TERM', None) # Shells running in emacs sets TERM to "dumb" or "eterm-color". # Do not set title for these to avoid garbled prompt. if term is None or term in ['dumb', 'eterm-color', 'linux']: return t = env.get('TITLE') if t is None: return t = partial_format_prompt(t) if ON_WINDOWS and 'ANSICON' not in env: t = escape_windows_cmd_string(t) os.system('title {}'.format(t)) else: os.write(1, "\x1b]2;{0}\x07".format(t).encode())
def prompt(self): """Obtains the current prompt string.""" if self.need_more_lines: if self.mlprompt is None: try: self.mlprompt = multiline_prompt() except Exception: # pylint: disable=broad-except print_exception() self.mlprompt = '<multiline prompt error> ' return self.mlprompt env = builtins.__xonsh_env__ # pylint: disable=no-member p = env.get('PROMPT') try: p = partial_format_prompt(p) except Exception: # pylint: disable=broad-except print_exception() self.settitle() return p
def prompt(self): """Obtains the current prompt string.""" if self.need_more_lines: if self.mlprompt is None: try: self.mlprompt = multiline_prompt() except Exception: # pylint: disable=broad-except print_exception() self.mlprompt = '<multiline prompt error> ' return self.mlprompt env = builtins.__xonsh_env__ # pylint: disable=no-member p = env.get('PROMPT') try: p = partial_format_prompt(p) except Exception: # pylint: disable=broad-except print_exception() self.settitle() return p
def settitle(self): """Sets terminal title.""" _ = self env = builtins.__xonsh_env__ # pylint: disable=no-member term = env.get('TERM', None) # Shells running in emacs sets TERM to "dumb" or "eterm-color". # Do not set title for these to avoid garbled prompt. if (term is None and not ON_WINDOWS) or term in ['dumb', 'eterm-color', 'linux']: return t = env.get('TITLE') if t is None: return t = partial_format_prompt(t) if ON_WINDOWS and 'ANSICON' not in env: t = escape_windows_cmd_string(t) os.system('title {}'.format(t)) else: os.write(1, "\x1b]2;{0}\x07".format(t).encode())
def settitle(self): """Sets terminal title.""" env = builtins.__xonsh_env__ # pylint: disable=no-member term = env.get('TERM', None) # Shells running in emacs sets TERM to "dumb" or "eterm-color". # Do not set title for these to avoid garbled prompt. if (term is None and not ON_WINDOWS) or term in ['dumb', 'eterm-color', 'linux']: return t = env.get('TITLE') if t is None: return t = partial_format_prompt(t) if ON_WINDOWS and 'ANSICON' not in env: t = escape_windows_cmd_string(t) os.system('title {}'.format(t)) else: with open(1, 'wb', closefd=False) as f: # prevent xonsh from answering interative questions # on the next command by writing the title f.write("\x1b]2;{0}\x07".format(t).encode()) f.flush()
def settitle(self): """Sets terminal title.""" env = builtins.__xonsh_env__ # pylint: disable=no-member term = env.get('TERM', None) # Shells running in emacs sets TERM to "dumb" or "eterm-color". # Do not set title for these to avoid garbled prompt. if (term is None and not ON_WINDOWS) or term in [ 'dumb', 'eterm-color', 'linux' ]: return t = env.get('TITLE') if t is None: return t = partial_format_prompt(t) if ON_WINDOWS and 'ANSICON' not in env: t = escape_windows_cmd_string(t) os.system('title {}'.format(t)) else: with open(1, 'wb', closefd=False) as f: # prevent xonsh from answering interative questions # on the next command by writing the title f.write("\x1b]0;{0}\x07".format(t).encode()) f.flush()
def test_format_prompt_with_format_spec(inp, exp, formatter_dict): obs = partial_format_prompt(template=inp, formatter_dict=formatter_dict) assert exp == obs
def test_format_prompt_with_invalid_func(): def p(): foo = bar # raises exception return '{user}' assert_is_instance(partial_format_prompt(p), str) assert_is_instance(format_prompt(p), str)
def test_format_prompt_with_format_spec(inp, exp, formatter_dict): obs = partial_format_prompt(template=inp, formatter_dict=formatter_dict) assert exp == obs