def _get_prompt_tokens_and_style(self): """Returns function to pass as prompt to prompt_toolkit.""" token_names, cstyles, strings = format_prompt_for_prompt_toolkit( self.prompt) tokens = [getattr(Token, n) for n in token_names] def get_tokens(cli): return list(zip(tokens, strings)) class CustomStyle(Style): styles = { Token.Menu.Completions.Completion.Current: 'bg:#00aaaa #000000', Token.Menu.Completions.Completion: 'bg:#008888 #ffffff', Token.Menu.Completions.ProgressButton: 'bg:#003333', Token.Menu.Completions.ProgressBar: 'bg:#00aaaa', Token.AutoSuggestion: '#666666', Token.Aborted: '#888888', } # update with the prompt styles styles.update({t: s for (t, s) in zip(tokens, cstyles)}) # Update with with any user styles userstyle = builtins.__xonsh_env__.get('PROMPT_TOOLKIT_STYLES') if userstyle is not None: styles.update(userstyle) return get_tokens, CustomStyle
def test_format_prompt_for_prompt_toolkit(): templ = ('>>> {BOLD_BLUE}~/xonsh {WHITE} (main){NO_COLOR}') prompt = format_prompt(templ, TERM_COLORS) token_names, color_styles, strings = format_prompt_for_prompt_toolkit(prompt) assert_equal(token_names, ['NO_COLOR', 'BOLD_BLUE', 'WHITE', 'NO_COLOR']) assert_equal(color_styles, ['', 'bold #0000FF', '#FFFFFF', '']) assert_equal(strings, ['>>> ', '~/xonsh ', ' (main)', ''])
def test_format_prompt_for_prompt_toolkit(): cases = [ ('root $ ', ['r', 'o', 'o', 't', ' ', '$', ' ']), ('\001\033[0;31m\002>>', [FakeChar('>', prefix='\001\033[0;31m\002'), '>']), ('\001\033[0;31m\002>>\001\033[0m\002', [ FakeChar('>', prefix='\001\033[0;31m\002'), FakeChar('>', suffix='\001\033[0m\002') ]), ('\001\033[0;31m\002>\001\033[0m\002', [ FakeChar('>', prefix='\001\033[0;31m\002', suffix='\001\033[0m\002') ]), ('\001\033[0;31m\002> $\001\033[0m\002', [ FakeChar('>', prefix='\001\033[0;31m\002'), ' ', FakeChar('$', suffix='\001\033[0m\002') ]), ('\001\033[0;31m\002\001\033[0;32m\002$> \001\033[0m\002', [ FakeChar('$', prefix='\001\033[0;31m\002\001\033[0;32m\002'), '>', FakeChar(' ', suffix='\001\033[0m\002') ]), ] for test, ans in cases: assert_equal(format_prompt_for_prompt_toolkit(test), ans)
def _get_prompt_tokens_and_style(self): """Returns function to pass as prompt to prompt_toolkit.""" token_names, cstyles, strings = format_prompt_for_prompt_toolkit(self.prompt) tokens = [getattr(Token, n) for n in token_names] def get_tokens(cli): return list(zip(tokens, strings)) class CustomStyle(Style): styles = { Token.Menu.Completions.Completion.Current: 'bg:#00aaaa #000000', Token.Menu.Completions.Completion: 'bg:#008888 #ffffff', Token.Menu.Completions.ProgressButton: 'bg:#003333', Token.Menu.Completions.ProgressBar: 'bg:#00aaaa', Token.AutoSuggestion: '#666666', Token.Aborted: '#888888', } # update with the prompt styles styles.update({t: s for (t, s) in zip(tokens, cstyles)}) # Update with with any user styles userstyle = builtins.__xonsh_env__.get('PROMPT_TOOLKIT_STYLES') if userstyle is not None: styles.update(userstyle) return get_tokens, CustomStyle
def test_format_prompt_for_prompt_toolkit(): cases = [ ('root $ ', ['r', 'o', 'o', 't', ' ', '$', ' ']), ('\001\033[0;31m\002>>', [FakeChar('>', prefix='\001\033[0;31m\002'), '>'] ), ('\001\033[0;31m\002>>\001\033[0m\002', [FakeChar('>', prefix='\001\033[0;31m\002'), FakeChar('>', suffix='\001\033[0m\002')] ), ('\001\033[0;31m\002>\001\033[0m\002', [FakeChar('>', prefix='\001\033[0;31m\002', suffix='\001\033[0m\002') ] ), ('\001\033[0;31m\002> $\001\033[0m\002', [FakeChar('>', prefix='\001\033[0;31m\002'), ' ', FakeChar('$', suffix='\001\033[0m\002')] ), ('\001\033[0;31m\002\001\033[0;32m\002$> \001\033[0m\002', [FakeChar('$', prefix='\001\033[0;31m\002\001\033[0;32m\002'), '>', FakeChar(' ', suffix='\001\033[0m\002')] ), ] for test, ans in cases: assert_equal(format_prompt_for_prompt_toolkit(test), ans)
def test_format_prompt_for_prompt_toolkit(): templ = ('>>> {BOLD_BLUE}~/xonsh {WHITE} (main){NO_COLOR}') prompt = format_prompt(templ, TERM_COLORS) token_names, color_styles, strings = format_prompt_for_prompt_toolkit(prompt) assert_equal(token_names, ['NO_COLOR', 'BOLD_BLUE', 'WHITE', 'NO_COLOR']) assert_equal(color_styles, ['', 'bold #0000D2', '#ffffff', '']) assert_equal(strings, ['>>> ', '~/xonsh ', ' (main)', ''])
def test_format_prompt_for_prompt_toolkit(): templ = ('>>> {BOLD_INTENSE_BLUE}~/xonsh {WHITE} {BACKGROUND_RED} {INTENSE_RED}(main){NO_COLOR}') prompt = format_prompt(templ, TERM_COLORS) token_names, color_styles, strings = format_prompt_for_prompt_toolkit(prompt) assert_equal(token_names, ['NO_COLOR', 'BOLD_INTENSE_BLUE', 'WHITE', 'BACKGROUND_RED', 'INTENSE_RED', 'NO_COLOR']) assert_equal(color_styles, ['noinherit', 'bold #0000d2', '#f0f0f0', 'bg:#800000', 'bg:#800000 #ff1010', 'noinherit']) assert_equal(strings, ['>>> ', '~/xonsh ', ' ', ' ', '(main)', ''])
def _get_prompt_tokens_and_style(self): """Returns function to pass as prompt to prompt_toolkit.""" token_names, cstyles, strings = format_prompt_for_prompt_toolkit(self.prompt) tokens = [getattr(Token, n) for n in token_names] def get_tokens(cli): return list(zip(tokens, strings)) custom_style = _xonsh_style(tokens, cstyles) return get_tokens, custom_style
def get_tokens(cli): return [(Token.Prompt, format_prompt_for_prompt_toolkit(self.prompt))]