mirror of
https://github.com/powerline/powerline.git
synced 2025-07-24 22:36:01 +02:00
Merge pull request #1348 from ZyX-I/fix-1347
Fix warning when &l:statusline is set to a unicode value
This commit is contained in:
commit
034b7d529d
@ -52,7 +52,31 @@ class VimPowerline(Powerline):
|
|||||||
super(VimPowerline, self).init('vim', **kwargs)
|
super(VimPowerline, self).init('vim', **kwargs)
|
||||||
self.last_window_id = 1
|
self.last_window_id = 1
|
||||||
self.pyeval = pyeval
|
self.pyeval = pyeval
|
||||||
self.window_statusline = '%!' + pyeval + '(\'powerline.statusline({0})\')'
|
self.construct_window_statusline = self.create_window_statusline_constructor()
|
||||||
|
|
||||||
|
if sys.version_info < (3,):
|
||||||
|
def create_window_statusline_constructor(self):
|
||||||
|
window_statusline = b'%!' + str(self.pyeval) + b'(\'powerline.statusline({0})\')'
|
||||||
|
return window_statusline.format
|
||||||
|
else:
|
||||||
|
def create_window_statusline_constructor(self):
|
||||||
|
startstr = b'%!' + self.pyeval.encode('ascii') + b'(\'powerline.statusline('
|
||||||
|
endstr = b')\')'
|
||||||
|
return lambda idx: (
|
||||||
|
startstr + str(idx).encode('ascii') + endstr
|
||||||
|
)
|
||||||
|
|
||||||
|
create_window_statusline_constructor.__doc__ = (
|
||||||
|
'''Create function which returns &l:stl value being given window index
|
||||||
|
|
||||||
|
Created function must return :py:class:`bytes` instance because this is
|
||||||
|
what ``window.options['statusline']`` returns (``window`` is
|
||||||
|
:py:class:`vim.Window` instance).
|
||||||
|
|
||||||
|
:return:
|
||||||
|
Function with type ``int → bytes``.
|
||||||
|
'''
|
||||||
|
)
|
||||||
|
|
||||||
default_log_stream = sys.stdout
|
default_log_stream = sys.stdout
|
||||||
|
|
||||||
@ -174,7 +198,7 @@ class VimPowerline(Powerline):
|
|||||||
pyeval = 'PowerlinePyeval'
|
pyeval = 'PowerlinePyeval'
|
||||||
|
|
||||||
self.pyeval = pyeval
|
self.pyeval = pyeval
|
||||||
self.window_statusline = '%!' + pyeval + '(\'powerline.statusline({0})\')'
|
self.construct_window_statusline = self.create_window_statusline_constructor()
|
||||||
|
|
||||||
self.update_renderer()
|
self.update_renderer()
|
||||||
__main__.powerline = self
|
__main__.powerline = self
|
||||||
@ -240,14 +264,14 @@ class VimPowerline(Powerline):
|
|||||||
curwindow_id = self.last_window_id
|
curwindow_id = self.last_window_id
|
||||||
self.last_window_id += 1
|
self.last_window_id += 1
|
||||||
window.vars['powerline_window_id'] = curwindow_id
|
window.vars['powerline_window_id'] = curwindow_id
|
||||||
statusline = self.window_statusline.format(curwindow_id)
|
statusline = self.construct_window_statusline(curwindow_id)
|
||||||
if window.options['statusline'] != statusline:
|
if window.options['statusline'] != statusline:
|
||||||
window.options['statusline'] = statusline
|
window.options['statusline'] = statusline
|
||||||
if curwindow_id == window_id if window_id else window is vim.current.window:
|
if curwindow_id == window_id if window_id else window is vim.current.window:
|
||||||
r = (window, curwindow_id, window.number)
|
r = (window, curwindow_id, window.number)
|
||||||
return r
|
return r
|
||||||
else:
|
else:
|
||||||
_vim_getwinvar = staticmethod(vim_get_func('getwinvar'))
|
_vim_getwinvar = staticmethod(vim_get_func('getwinvar', 'bytes'))
|
||||||
_vim_setwinvar = staticmethod(vim_get_func('setwinvar'))
|
_vim_setwinvar = staticmethod(vim_get_func('setwinvar'))
|
||||||
|
|
||||||
def win_idx(self, window_id):
|
def win_idx(self, window_id):
|
||||||
@ -260,7 +284,7 @@ class VimPowerline(Powerline):
|
|||||||
curwindow_id = self.last_window_id
|
curwindow_id = self.last_window_id
|
||||||
self.last_window_id += 1
|
self.last_window_id += 1
|
||||||
self._vim_setwinvar(winnr, 'powerline_window_id', curwindow_id)
|
self._vim_setwinvar(winnr, 'powerline_window_id', curwindow_id)
|
||||||
statusline = self.window_statusline.format(curwindow_id)
|
statusline = self.construct_window_statusline(curwindow_id)
|
||||||
if self._vim_getwinvar(winnr, '&statusline') != statusline:
|
if self._vim_getwinvar(winnr, '&statusline') != statusline:
|
||||||
self._vim_setwinvar(winnr, '&statusline', statusline)
|
self._vim_setwinvar(winnr, '&statusline', statusline)
|
||||||
if curwindow_id == window_id if window_id else window is vim.current.window:
|
if curwindow_id == window_id if window_id else window is vim.current.window:
|
||||||
|
22
tests/test_foreign_stl_override.vim
Normal file
22
tests/test_foreign_stl_override.vim
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
scriptencoding utf-8
|
||||||
|
set encoding=utf-8
|
||||||
|
let g:powerline_config_paths = [expand('<sfile>:p:h:h') . '/powerline/config_files']
|
||||||
|
set laststatus=2
|
||||||
|
redir => g:messages
|
||||||
|
try
|
||||||
|
source powerline/bindings/vim/plugin/powerline.vim
|
||||||
|
redrawstatus!
|
||||||
|
vsplit
|
||||||
|
redrawstatus!
|
||||||
|
setlocal statusline=«»
|
||||||
|
redrawstatus!
|
||||||
|
catch
|
||||||
|
call writefile(['Unexpected exception', v:exception], 'message.fail')
|
||||||
|
cquit
|
||||||
|
endtry
|
||||||
|
redir END
|
||||||
|
if g:messages =~# '\v\S'
|
||||||
|
call writefile(['Unexpected messages'] + split(g:messages, "\n", 1), 'message.fail')
|
||||||
|
cquit
|
||||||
|
endif
|
||||||
|
qall!
|
Loading…
x
Reference in New Issue
Block a user