From c4b4097b0cc3cbba598dcfae69352f357490ff01 Mon Sep 17 00:00:00 2001 From: Foo Date: Mon, 19 Oct 2015 21:56:46 +0300 Subject: [PATCH 1/3] Transform pane_id to unicode before using Tmux-2.1 appears not to output leading `%` when using `tmux display -p '#D'`. This change changes type of the `pane_id` argument: leading `%` turns it into a literal string, number in front makes it be parsed as a JSON number. Fixes #1470 --- docs/source/develop/segments.rst | 11 ++++++++++- powerline/commands/main.py | 10 +++++++++- powerline/renderers/tmux.py | 2 +- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/docs/source/develop/segments.rst b/docs/source/develop/segments.rst index 8d752229..d96bb1cb 100644 --- a/docs/source/develop/segments.rst +++ b/docs/source/develop/segments.rst @@ -467,7 +467,8 @@ Shell ``client_id`` Identifier unique to one shell instance. Is used to record instance - state by powerline daemon. + state by powerline daemon. In tmux this is the same as :ref:`pane_id + `. It is not guaranteed that existing client ID will not be retaken when old shell with this ID quit: usually process PID is used as @@ -481,6 +482,14 @@ Shell Local theme that will be used by shell. One should not rely on the existence of this key. + .. _dev-seginfo-shell-renarg-pane_id: + + ``pane_id`` + Identifier unique to each tmux pane. Is always an integer, optional. + Obtained by using ``tmux display -p '#D'``, then all leading spaces + and per cent signs are stripped and the result is converted into an + integer. + Other keys, if any, are specific to segments. Ipython diff --git a/powerline/commands/main.py b/powerline/commands/main.py index da228edf..a5b27ef7 100644 --- a/powerline/commands/main.py +++ b/powerline/commands/main.py @@ -10,7 +10,7 @@ from itertools import chain from powerline.lib.overrides import parsedotval, parse_override_var from powerline.lib.dict import mergeargs from powerline.lib.encoding import get_preferred_arguments_encoding -from powerline.lib.unicode import u +from powerline.lib.unicode import u, unicode if sys.version_info < (3,): @@ -49,6 +49,14 @@ def finish_args(environ, args): )) if args.renderer_arg: args.renderer_arg = mergeargs((parsedotval(v) for v in args.renderer_arg), remove=True) + if 'pane_id' in args.renderer_arg: + if isinstance(args.renderer_arg['pane_id'], (bytes, unicode)): + try: + args.renderer_arg['pane_id'] = int(args.renderer_arg['pane_id'].lstrip(' %')) + except ValueError: + pass + if 'client_id' not in args.renderer_arg: + args.renderer_arg['client_id'] = args.renderer_arg['pane_id'] args.config_path = ( [path for path in environ.get('POWERLINE_CONFIG_PATHS', '').split(':') if path] + (args.config_path or []) diff --git a/powerline/renderers/tmux.py b/powerline/renderers/tmux.py index 33556409..840bbdda 100644 --- a/powerline/renderers/tmux.py +++ b/powerline/renderers/tmux.py @@ -63,7 +63,7 @@ class TmuxRenderer(Renderer): if segment_info: r.update(segment_info) if 'pane_id' in r: - varname = 'TMUX_PWD_' + r['pane_id'].lstrip('% ') + varname = 'TMUX_PWD_' + str(r['pane_id']) if varname in r['environ']: r['getcwd'] = lambda: r['environ'][varname] r['mode'] = mode From 688e50796749739296642b15e66ca733bb802d6b Mon Sep 17 00:00:00 2001 From: Foo Date: Mon, 19 Oct 2015 22:46:20 +0300 Subject: [PATCH 2/3] Install old virtualenvwrapper for 2.6 UCS2 Python --- tests/install.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/install.sh b/tests/install.sh index 6c1bbbd0..d9fb48af 100755 --- a/tests/install.sh +++ b/tests/install.sh @@ -29,7 +29,11 @@ checkout_cached_dir git://github.com/powerline/deps tests/bot-ci/deps mkdir -p "$HOME/opt" if test -n "$USE_UCS2_PYTHON" ; then - pip install virtualenvwrapper + if test "$UCS2_PYTHON_VARIANT" = "2.6" ; then + pip install 'virtualenvwrapper==4.6.0' + else + pip install virtualenvwrapper + fi set +e . virtualenvwrapper.sh set -e From 0233909189d1c145c1c403b1578fc1ea130d91d7 Mon Sep 17 00:00:00 2001 From: Foo Date: Mon, 19 Oct 2015 23:29:34 +0300 Subject: [PATCH 3/3] Do not allow failures any more --- .travis.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6be388b4..01429651 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,10 +34,5 @@ matrix: env: >- USE_UCS2_PYTHON=1 UCS2_PYTHON_VARIANT="2.7" - allow_failures: - - python: "2.6" - env: >- - USE_UCS2_PYTHON=1 - UCS2_PYTHON_VARIANT="2.6" # vim: et