Merge pull request #1056 from ZyX-I/vim-troubleshooting

Improve vim troubleshooting
This commit is contained in:
Nikolai Aleksandrovich Pavlov 2014-09-04 08:42:04 +04:00
commit 31ccd2907a
5 changed files with 40 additions and 10 deletions

View File

@ -103,7 +103,7 @@ class PowerlineLogger(object):
_fallback_logger = None
def get_fallback_logger():
def get_fallback_logger(stream=None):
global _fallback_logger
if _fallback_logger:
return _fallback_logger
@ -112,7 +112,7 @@ def get_fallback_logger():
formatter = logging.Formatter(log_format)
level = logging.WARNING
handler = logging.StreamHandler()
handler = logging.StreamHandler(stream)
handler.setLevel(level)
handler.setFormatter(formatter)
@ -195,7 +195,7 @@ def load_config(cfg_path, find_config_files, config_loader, loader_callback=None
return ret
def _get_log_handler(common_config):
def _get_log_handler(common_config, stream=None):
'''Get log handler.
:param dict common_config:
@ -211,17 +211,17 @@ def _get_log_handler(common_config):
os.mkdir(log_dir)
return logging.FileHandler(log_file)
else:
return logging.StreamHandler()
return logging.StreamHandler(stream)
def create_logger(common_config):
def create_logger(common_config, stream=None):
'''Create logger according to provided configuration
'''
log_format = common_config['log_format']
formatter = logging.Formatter(log_format)
level = getattr(logging, common_config['log_level'])
handler = _get_log_handler(common_config)
handler = _get_log_handler(common_config, stream)
handler.setLevel(level)
handler.setFormatter(formatter)
@ -456,7 +456,7 @@ class Powerline(object):
self.import_paths = self.common_config['paths']
if not self.logger:
self.logger = create_logger(self.common_config)
self.logger = create_logger(self.common_config, self.default_log_stream)
if not self.pl:
self.pl = PowerlineLogger(self.use_daemon_threads, self.logger, self.ext)
@ -562,6 +562,14 @@ class Powerline(object):
else:
self.renderer = renderer
default_log_stream = sys.stdout
'''Default stream for default log handler
Usually it is ``sys.stderr``, but there is sometimes a reason to prefer
``sys.stdout`` or a custom file-like object. It is not supposed to be used
to write to some file.
'''
def setup_components(self, components):
'''Run component-specific setup
@ -847,7 +855,7 @@ class Powerline(object):
if 'prefix' not in kwargs:
kwargs['prefix'] = 'powerline'
exception = kwargs.pop('exception', None)
pl = getattr(self, 'pl', None) or get_fallback_logger()
pl = getattr(self, 'pl', None) or get_fallback_logger(self.default_log_stream)
if exception:
try:
reraise(exception)

View File

@ -99,6 +99,7 @@ finally
echohl None
call s:rcmd("def powerline_troubleshoot():")
call s:rcmd(" import sys")
call s:rcmd(" import vim")
call s:rcmd(" if sys.version_info < (2, 6):")
call s:rcmd(" print('Too old python version: ' + sys.version + ' (first supported is 2.6)')")
call s:rcmd(" elif sys.version_info[0] == 3 and sys.version_info[1] < 2:")
@ -123,10 +124,12 @@ finally
call s:rcmd(" print('neither it is installed system-wide')")
call s:rcmd(" real_powerline_dir = os.path.realpath(powerline_dir)")
call s:rcmd(" real_this_dir = os.path.realpath(this_dir)")
call s:rcmd(" if powerline_appended_path is not None and real_this_dir != powerline_appended_path:")
call s:rcmd(" this_dir_par = os.path.dirname(real_this_dir)")
call s:rcmd(" powerline_appended_path = globals().get('powerline_appended_path')")
call s:rcmd(" if powerline_appended_path is not None and this_dir_par != powerline_appended_path:")
call s:rcmd(" print('Check your installation: this script is symlinked somewhere')")
call s:rcmd(" print('where powerline is not present: {0!r} != {1!r}.'.format(")
call s:rcmd(" real_this_dir, sys.path[-1]))")
call s:rcmd(" real_this_dir, powerline_appended_path))")
call s:rcmd(" elif real_powerline_dir != real_this_dir:")
call s:rcmd(" print('It appears that you have two powerline versions installed:')")
call s:rcmd(" print('one in ' + real_powerline_dir + ', other in ' + real_this_dir + '.')")

View File

@ -31,6 +31,8 @@ class VimPowerline(Powerline):
self.pyeval = pyeval
self.window_statusline = '%!' + pyeval + '(\'powerline.statusline({0})\')'
default_log_stream = sys.stdout
def add_local_theme(self, key, config):
'''Add local themes at runtime (during vim session).

View File

@ -3,6 +3,9 @@ set encoding=utf-8
let g:powerline_config_path = expand('<sfile>:p:h:h') . '/powerline/config_files'
let g:powerline_config_overrides = {'common': {'default_top_theme': 'ascii'}}
let g:powerline_theme_overrides__default = {'segment_data': {'line_current_symbol': {'contents': 'LN '}, 'branch': {'before': 'B '}}}
redir => g:messages
try
python import powerline.vim
let pycmd = 'python'
@ -36,4 +39,10 @@ if result isnot# '%#Pl_22_24320_148_11523840_bold# NORMAL %#Pl_148_11523840_236_
cquit
endif
redir END
if g:messages =~ '\S'
call writefile(['Non-empty messages:', g:messages], 'message.fail')
cquit
endif
qall!

View File

@ -6,6 +6,8 @@ edit abc
tabedit def
tabedit ghi
redir => g:messages
try
let &columns = 80
let result = eval(&tabline[2:])
@ -45,4 +47,10 @@ if result isnot# '%#Pl_240_5789784_235_2500134_NONE# 1 %#Pl_240_5789784_235_25
cquit
endif
redir END
if g:messages =~ '\S'
call writefile(['Non-empty messages:', g:messages], 'message.fail')
cquit
endif
qall!