From 4a2b0c442c686ba6f5571d4b75b4348ee1af1342 Mon Sep 17 00:00:00 2001 From: Janek Schleicher Date: Sun, 20 Aug 2017 14:31:24 +0200 Subject: [PATCH 1/3] Change white to black on default prompt hardcoded, WIP: Need to be configurable --- xonsh/environ.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/xonsh/environ.py b/xonsh/environ.py index e1ec72d..fbe9bf2 100644 --- a/xonsh/environ.py +++ b/xonsh/environ.py @@ -11,6 +11,7 @@ from functools import wraps from collections import MutableMapping, MutableSequence, MutableSet, namedtuple +import gitsome.config from xonsh import __version__ as XONSH_VERSION from xonsh.tools import TERM_COLORS, ON_WINDOWS, ON_MAC, ON_LINUX, ON_ARCH, \ is_int, always_true, always_false, ensure_string, is_env_path, str_to_env_path, \ @@ -79,14 +80,23 @@ def is_callable_default(x): """Checks if a value is a callable default.""" return callable(x) and getattr(x, '_xonsh_callable_default', False) +#DEFAULT_PROMPT = ('{BOLD_RED}{user} ' +# '{BOLD_WHITE}at ' +# '{BOLD_RED}{hostname} ' +# '{BOLD_WHITE}in ' +# '{BOLD_GREEN}{cwd} ' +# '{BOLD_WHITE}on' +# '{branch_color}{curr_branch} ' +# '{BOLD_WHITE}\n' +# '${NO_COLOR} ') DEFAULT_PROMPT = ('{BOLD_RED}{user} ' - '{BOLD_WHITE}at ' + '{BOLD_BLACK}at ' '{BOLD_RED}{hostname} ' - '{BOLD_WHITE}in ' + '{BOLD_BLACK}in ' '{BOLD_GREEN}{cwd} ' - '{BOLD_WHITE}on' + '{BOLD_BLACK}on' '{branch_color}{curr_branch} ' - '{BOLD_WHITE}\n' + '{BOLD_BLACK}\n' '${NO_COLOR} ') DEFAULT_TITLE = '{user} at {hostname}: {cwd} | xonsh' From 1f218c66d6fdce582c48bbe459ba8ebd97e275ef Mon Sep 17 00:00:00 2001 From: Janek Schleicher Date: Sat, 2 Sep 2017 09:54:20 +0200 Subject: [PATCH 2/3] Configurable prompt (written and read to .gitsomeconfig with default as previous hard coded) --- .gitsomeconfig | 2 ++ gitsome/config.py | 29 +++++++++++++++++++++++++++++ xonsh/environ.py | 22 +++------------------- 3 files changed, 34 insertions(+), 19 deletions(-) diff --git a/.gitsomeconfig b/.gitsomeconfig index fc77464..d4f2577 100644 --- a/.gitsomeconfig +++ b/.gitsomeconfig @@ -21,4 +21,6 @@ clr_tooltip = None clr_user = cyan clr_view_link = magenta clr_view_index = magenta +prompt = {BOLD_RED}{user} {BOLD_WHITE}at {BOLD_RED}{hostname} {BOLD_WHITE}in {BOLD_GREEN}{cwd} {BOLD_WHITE}on{branch_color}{curr_branch} {BOLD_WHITE} + ${NO_COLOR} diff --git a/gitsome/config.py b/gitsome/config.py index 2162798..f5addc5 100644 --- a/gitsome/config.py +++ b/gitsome/config.py @@ -123,6 +123,7 @@ class Config(object): CONFIG_CLR_VIEW_LINK = 'clr_view_link' CONFIG_CLR_VIEW_INDEX = 'clr_view_index' CONFIG_SECTION = 'github' + CONFIG_PROMPT = 'prompt' CONFIG_USER_LOGIN = 'user_login' CONFIG_USER_PASS = 'user_pass' CONFIG_USER_TOKEN = 'user_token' @@ -144,8 +145,10 @@ def __init__(self): self.verify_ssl = True self.urls = [] self._init_colors() + self._init_prompt() self.load_configs([ self.load_config_colors, + self.load_prompt, ]) self.login = login self.authorize = authorize @@ -174,6 +177,18 @@ def _init_colors(self): self.clr_view_link = 'magenta' self.clr_view_index = 'magenta' + def _init_prompt(self): + """Initialize prompt to its default.""" + self.prompt = ('{BOLD_RED}{user} ' + '{BOLD_WHITE}at ' + '{BOLD_RED}{hostname} ' + '{BOLD_WHITE}in ' + '{BOLD_GREEN}{cwd} ' + '{BOLD_WHITE}on' + '{branch_color}{curr_branch} ' + '{BOLD_WHITE}\n' + '${NO_COLOR} ') + def authenticate_cached_credentials(self, config, parser, enterprise_auth=enterprise_login): """Authenticate with the user's credentials in ~/.gitsomeconfig. @@ -549,6 +564,17 @@ def load_colors(self, parser): default=self.clr_view_index, color_config=True) + def load_prompt(self, parser): + """Load prompt from ~/.gitsomeconfig. + + :type parser: :class:`ConfigParser.RawConfigParser` + :param parser: An instance of `ConfigParser.RawConfigParser`. + """ + self.prompt = self.load_config( + parser=parser, + cfg_label=self.CONFIG_PROMPT, + default=self.prompt) + def load_urls(self, view_in_browser): """Load the current set of urls from ~/.gitsomeconfigurl. @@ -703,6 +729,9 @@ def save_config(self): parser.set(self.CONFIG_SECTION, self.CONFIG_CLR_VIEW_INDEX, self.clr_view_index) + parser.set(self.CONFIG_SECTION, + self.CONFIG_PROMPT, + self.prompt) with open(config, 'w+') as config_file: parser.write(config_file) diff --git a/xonsh/environ.py b/xonsh/environ.py index fbe9bf2..f5a3be1 100644 --- a/xonsh/environ.py +++ b/xonsh/environ.py @@ -11,7 +11,7 @@ from functools import wraps from collections import MutableMapping, MutableSequence, MutableSet, namedtuple -import gitsome.config +from gitsome.config import Config from xonsh import __version__ as XONSH_VERSION from xonsh.tools import TERM_COLORS, ON_WINDOWS, ON_MAC, ON_LINUX, ON_ARCH, \ is_int, always_true, always_false, ensure_string, is_env_path, str_to_env_path, \ @@ -80,24 +80,8 @@ def is_callable_default(x): """Checks if a value is a callable default.""" return callable(x) and getattr(x, '_xonsh_callable_default', False) -#DEFAULT_PROMPT = ('{BOLD_RED}{user} ' -# '{BOLD_WHITE}at ' -# '{BOLD_RED}{hostname} ' -# '{BOLD_WHITE}in ' -# '{BOLD_GREEN}{cwd} ' -# '{BOLD_WHITE}on' -# '{branch_color}{curr_branch} ' -# '{BOLD_WHITE}\n' -# '${NO_COLOR} ') -DEFAULT_PROMPT = ('{BOLD_RED}{user} ' - '{BOLD_BLACK}at ' - '{BOLD_RED}{hostname} ' - '{BOLD_BLACK}in ' - '{BOLD_GREEN}{cwd} ' - '{BOLD_BLACK}on' - '{branch_color}{curr_branch} ' - '{BOLD_BLACK}\n' - '${NO_COLOR} ') +config = Config() +DEFAULT_PROMPT = config.prompt DEFAULT_TITLE = '{user} at {hostname}: {cwd} | xonsh' @default_value From 20610a4313aa28aa20451f81161049af7cd3cc64 Mon Sep 17 00:00:00 2001 From: Janek Schleicher <16211159+hanfried@users.noreply.github.com> Date: Tue, 16 Aug 2022 08:57:37 +0200 Subject: [PATCH 3/3] Restoring 2 empty lines following PEP Resolving merge conflicts ended up having just one line between functions and/or other code. This commit brings back the 2 lines separation --- xonsh/environ.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xonsh/environ.py b/xonsh/environ.py index dba4705..cdf0bee 100644 --- a/xonsh/environ.py +++ b/xonsh/environ.py @@ -606,10 +606,12 @@ def is_callable_default(x): """Checks if a value is a callable default.""" return callable(x) and getattr(x, '_xonsh_callable_default', False) + config = Config() DEFAULT_PROMPT = config.prompt DEFAULT_TITLE = "{current_job:{} | }{user}@{hostname}: {cwd} | xonsh" + @default_value def xonsh_data_dir(env): """Ensures and returns the $XONSH_DATA_DIR"""