From 7f1abf1459bf21b8c8bdccaa82953d81fdf7db30 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Thu, 14 Nov 2013 01:40:40 +0100 Subject: [PATCH 1/3] Vim: add window_title function, used in quickfix theme This is used to display the window title of the quickfix window. Both Syntastic and Vim use this. See w:quickfix_title. --- .../config_files/colorschemes/vim/default.json | 1 + .../config_files/colorschemes/vim/solarized.json | 1 + powerline/config_files/themes/vim/quickfix.json | 5 ++++- powerline/segments/vim.py | 14 ++++++++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/powerline/config_files/colorschemes/vim/default.json b/powerline/config_files/colorschemes/vim/default.json index 984ac606..2cdef8db 100644 --- a/powerline/config_files/colorschemes/vim/default.json +++ b/powerline/config_files/colorschemes/vim/default.json @@ -14,6 +14,7 @@ "branch:divider": { "fg": "gray7", "bg": "gray4" }, "file_directory": { "fg": "gray9", "bg": "gray4" }, "file_name": { "fg": "white", "bg": "gray4", "attr": ["bold"] }, + "window_title": { "fg": "white", "bg": "gray4" }, "file_size": { "fg": "gray8", "bg": "gray2" }, "file_name_no_file": { "fg": "gray9", "bg": "gray4", "attr": ["bold"] }, "file_name_empty": { "fg": "gray9", "bg": "gray4" }, diff --git a/powerline/config_files/colorschemes/vim/solarized.json b/powerline/config_files/colorschemes/vim/solarized.json index 3adeb259..7705b17c 100644 --- a/powerline/config_files/colorschemes/vim/solarized.json +++ b/powerline/config_files/colorschemes/vim/solarized.json @@ -14,6 +14,7 @@ "branch:divider": { "fg": "gray61", "bg": "darkgreencopper" }, "file_directory": { "fg": "lightyellow", "bg": "darkgreencopper" }, "file_name": { "fg": "oldlace", "bg": "darkgreencopper", "attr": ["bold"] }, + "window_title": { "fg": "oldlace", "bg": "darkgreencopper" }, "file_size": { "fg": "oldlace", "bg": "darkgreencopper" }, "file_name_no_file": { "fg": "oldlace", "bg": "darkgreencopper", "attr": ["bold"] }, "file_name_empty": { "fg": "oldlace", "bg": "darkgreencopper" }, diff --git a/powerline/config_files/themes/vim/quickfix.json b/powerline/config_files/themes/vim/quickfix.json index da77d631..e1e8f253 100644 --- a/powerline/config_files/themes/vim/quickfix.json +++ b/powerline/config_files/themes/vim/quickfix.json @@ -9,7 +9,10 @@ { "type": "string", "name": "buffer_name", - "highlight_group": ["file_name"], + "highlight_group": ["file_name"] + }, + { + "name": "window_title", "draw_soft_divider": false }, { diff --git a/powerline/segments/vim.py b/powerline/segments/vim.py index 47441fe9..c79b498c 100644 --- a/powerline/segments/vim.py +++ b/powerline/segments/vim.py @@ -249,6 +249,20 @@ def file_type(pl, segment_info): return vim_getbufoption(segment_info, 'filetype') or None +@requires_segment_info +def window_title(pl, segment_info): + '''Return the window title. + + This currently looks at the ``quickfix_title`` window variable, + which is used by Syntastic and Vim itself. + + It is used in the quickfix theme.''' + try: + return segment_info['window'].vars['quickfix_title'] + except KeyError: + return None + + @requires_segment_info def line_percent(pl, segment_info, gradient=False): '''Return the cursor position in the file as a percentage. From d7589bc8950782c879a5af00f018156201888229 Mon Sep 17 00:00:00 2001 From: ZyX Date: Mon, 3 Feb 2014 22:26:34 +0400 Subject: [PATCH 2/3] Make window_title work in older vims --- powerline/bindings/vim/__init__.py | 21 +++++++++++++++------ powerline/segments/vim.py | 4 ++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/powerline/bindings/vim/__init__.py b/powerline/bindings/vim/__init__.py index 32736fdf..d618a089 100644 --- a/powerline/bindings/vim/__init__.py +++ b/powerline/bindings/vim/__init__.py @@ -43,7 +43,7 @@ else: # It may crash on some old vim versions and I do not remember in which patch # I fixed this crash. -if hasattr(vim, 'vars') and vim.vvars['version'] > 703: +if hasattr(vim, 'vvars') and vim.vvars['version'] > 703: _vim_to_python_types = { vim.Dictionary: lambda value: dict(((key, _vim_to_python(value[key])) for key in value.keys())), vim.List: lambda value: [_vim_to_python(item) for item in value], @@ -57,6 +57,13 @@ if hasattr(vim, 'vars') and vim.vvars['version'] > 703: def vim_getvar(varname): return _vim_to_python(vim.vars[str(varname)]) + + def bufvar_exists(buffer, varname): + buffer = buffer or vim.current.buffer + return varname in buffer.vars + + def vim_getwinvar(segment_info, varname): + return _vim_to_python(segment_info['window'].vars[str(varname)]) else: _vim_exists = vim_get_func('exists', rettype=int) @@ -67,11 +74,6 @@ else: else: raise KeyError(varname) -if hasattr(vim, 'vars') and vim.vvars['version'] > 703: - def bufvar_exists(buffer, varname): - buffer = buffer or vim.current.buffer - return varname in buffer.vars -else: def bufvar_exists(buffer, varname): # NOQA if not buffer or buffer.number == vim.current.buffer.number: return vim.eval('exists("b:{0}")'.format(varname)) @@ -79,6 +81,13 @@ else: return vim.eval('has_key(getbufvar({0}, ""), {1})' .format(buffer.number, varname)) + def vim_getwinvar(segment_info, varname): # NOQA + result = vim.eval('getwinvar({0}, "{1}")'.format(segment_info['winnr'], varname)) + if result == '': + if not int(vim.eval('has_key(getwinvar({0}, ""), "{1}")'.format(segment_info['winnr'], varname))): + raise KeyError(varname) + return result + if hasattr(vim, 'options'): def vim_getbufoption(info, option): return info['buffer'].options[option] diff --git a/powerline/segments/vim.py b/powerline/segments/vim.py index c79b498c..ac9552d6 100644 --- a/powerline/segments/vim.py +++ b/powerline/segments/vim.py @@ -9,7 +9,7 @@ except ImportError: vim = {} # NOQA from powerline.bindings.vim import (vim_get_func, getbufvar, vim_getbufoption, - buffer_name) + buffer_name, vim_getwinvar) from powerline.theme import requires_segment_info from powerline.lib import add_divider_highlight_group from powerline.lib.vcs import guess, tree_status @@ -258,7 +258,7 @@ def window_title(pl, segment_info): It is used in the quickfix theme.''' try: - return segment_info['window'].vars['quickfix_title'] + return vim_getwinvar(segment_info, 'quickfix_title') except KeyError: return None From 52d182f0e23700392ccbf2e9683acdaa4716ba35 Mon Sep 17 00:00:00 2001 From: ZyX Date: Mon, 3 Feb 2014 22:34:14 +0400 Subject: [PATCH 3/3] Add window_title group to solarizedlight colorschem --- powerline/config_files/colorschemes/vim/solarizedlight.json | 1 + 1 file changed, 1 insertion(+) diff --git a/powerline/config_files/colorschemes/vim/solarizedlight.json b/powerline/config_files/colorschemes/vim/solarizedlight.json index 70d8c4c5..b8e4c254 100644 --- a/powerline/config_files/colorschemes/vim/solarizedlight.json +++ b/powerline/config_files/colorschemes/vim/solarizedlight.json @@ -14,6 +14,7 @@ "branch:divider": { "fg": "gray61", "bg": "lightyellow" }, "file_directory": { "fg": "royalblue5", "bg": "lightyellow" }, "file_name": { "fg": "gray13", "bg": "lightyellow", "attr": ["bold"] }, + "window_title": { "fg": "gray13", "bg": "lightyellow" }, "file_size": { "fg": "gray13", "bg": "lightyellow" }, "file_name_no_file": { "fg": "gray13", "bg": "lightyellow", "attr": ["bold"] }, "file_name_empty": { "fg": "gray13", "bg": "lightyellow" },