Merge pull request #1471 from ZyX-I/tmux-2.1-update

Support tmux-2.1
This commit is contained in:
Nikolai Aleksandrovich Pavlov 2015-10-19 23:34:12 +03:00
commit ddfbb20eba
5 changed files with 25 additions and 9 deletions

View File

@ -34,10 +34,5 @@ matrix:
env: >- env: >-
USE_UCS2_PYTHON=1 USE_UCS2_PYTHON=1
UCS2_PYTHON_VARIANT="2.7" UCS2_PYTHON_VARIANT="2.7"
allow_failures:
- python: "2.6"
env: >-
USE_UCS2_PYTHON=1
UCS2_PYTHON_VARIANT="2.6"
# vim: et # vim: et

View File

@ -467,7 +467,8 @@ Shell
``client_id`` ``client_id``
Identifier unique to one shell instance. Is used to record instance 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
<dev-seginfo-shell-renarg-pane_id>`.
It is not guaranteed that existing client ID will not be retaken 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 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 Local theme that will be used by shell. One should not rely on the
existence of this key. 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. Other keys, if any, are specific to segments.
Ipython Ipython

View File

@ -10,7 +10,7 @@ from itertools import chain
from powerline.lib.overrides import parsedotval, parse_override_var from powerline.lib.overrides import parsedotval, parse_override_var
from powerline.lib.dict import mergeargs from powerline.lib.dict import mergeargs
from powerline.lib.encoding import get_preferred_arguments_encoding 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,): if sys.version_info < (3,):
@ -49,6 +49,14 @@ def finish_args(environ, args):
)) ))
if args.renderer_arg: if args.renderer_arg:
args.renderer_arg = mergeargs((parsedotval(v) for v in args.renderer_arg), remove=True) 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 = ( args.config_path = (
[path for path in environ.get('POWERLINE_CONFIG_PATHS', '').split(':') if path] [path for path in environ.get('POWERLINE_CONFIG_PATHS', '').split(':') if path]
+ (args.config_path or []) + (args.config_path or [])

View File

@ -63,7 +63,7 @@ class TmuxRenderer(Renderer):
if segment_info: if segment_info:
r.update(segment_info) r.update(segment_info)
if 'pane_id' in r: if 'pane_id' in r:
varname = 'TMUX_PWD_' + r['pane_id'].lstrip('% ') varname = 'TMUX_PWD_' + str(r['pane_id'])
if varname in r['environ']: if varname in r['environ']:
r['getcwd'] = lambda: r['environ'][varname] r['getcwd'] = lambda: r['environ'][varname]
r['mode'] = mode r['mode'] = mode

View File

@ -29,7 +29,11 @@ checkout_cached_dir git://github.com/powerline/deps tests/bot-ci/deps
mkdir -p "$HOME/opt" mkdir -p "$HOME/opt"
if test -n "$USE_UCS2_PYTHON" ; then 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 set +e
. virtualenvwrapper.sh . virtualenvwrapper.sh
set -e set -e