Source code for powerline.segments.vim.plugin.ale

# vim:fileencoding=utf-8:noet
from __future__ import (unicode_literals, division, absolute_import, print_function)

try:
	import vim
except ImportError:
	vim = object()

from powerline.bindings.vim import vim_global_exists
from powerline.theme import requires_segment_info


[docs]@requires_segment_info def ale(segment_info, pl, err_format='ERR: ln {first_line} ({num}) ', warn_format='WARN: ln {first_line} ({num}) '): '''Show whether ALE has found any errors or warnings :param str err_format: Format string for errors. :param str warn_format: Format string for warnings. Highlight groups used: ``ale:warning`` or ``warning``, ``ale:error`` or ``error``. ''' if not (vim_global_exists('ale_enabled') and int(vim.eval('g:ale_enabled'))): return None has_errors = int(vim.eval('ale#statusline#Count(' + str(segment_info['bufnr']) + ').total')) if not has_errors: return error = None warning = None errors_count = 0 warnings_count = 0 for issue in vim.eval('ale#engine#GetLoclist(' + str(segment_info['bufnr']) + ')'): if issue['type'] == 'E': error = error or issue errors_count += 1 elif issue['type'] == 'W': warning = warning or issue warnings_count += 1 segments = [] if error: segments.append({ 'contents': err_format.format(first_line=error['lnum'], num=errors_count), 'highlight_groups': ['ale:error', 'error'], }) if warning: segments.append({ 'contents': warn_format.format(first_line=warning['lnum'], num=warnings_count), 'highlight_groups': ['ale:warning', 'warning'], }) return segments