summaryrefslogtreecommitdiffstats
path: root/powerline/segments/vim/plugin/coc.py
diff options
context:
space:
mode:
Diffstat (limited to 'powerline/segments/vim/plugin/coc.py')
-rw-r--r--powerline/segments/vim/plugin/coc.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/powerline/segments/vim/plugin/coc.py b/powerline/segments/vim/plugin/coc.py
new file mode 100644
index 0000000..290faec
--- /dev/null
+++ b/powerline/segments/vim/plugin/coc.py
@@ -0,0 +1,51 @@
+# 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_command_exists
+from powerline.theme import requires_segment_info
+
+# coc_status's format: E1 W2
+def parse_coc_status(coc_status):
+ # type(coc_status) is tuple
+ errors_count = 0
+ warnings_count = 0
+ if len(coc_status) <= 0:
+ return errors_count, warnings_count
+ status_str = coc_status[0]
+ if len(status_str) <= 0:
+ return errors_count, warnings_count
+ status_list = status_str.split(' ')
+ for item in status_list:
+ if len(item) > 0 and item[0] == 'E':
+ errors_count = int(item[1:])
+ if len(item) > 0 and item[0] == 'W':
+ warnings_count = int(item[1:])
+ return errors_count, warnings_count
+
+@requires_segment_info
+def coc(segment_info, pl):
+ '''Show whether coc.nvim has found any errors or warnings
+
+ Highlight groups used: ``coc:warning`` or ``warning``, ``coc:error`` or ``error``.
+ '''
+ segments = []
+ if not vim_command_exists('CocCommand'):
+ return segments
+ coc_status = vim.eval('coc#status()'),
+ errors_count, warnings_count = parse_coc_status(coc_status)
+ if errors_count > 0:
+ segments.append({
+ 'contents': 'E:' + str(errors_count),
+ 'highlight_groups': ['coc:error', 'error'],
+ })
+ if warnings_count > 0:
+ segments.append({
+ 'contents': 'W:' + str(warnings_count),
+ 'highlight_groups': ['coc:warning', 'warning'],
+ })
+ return segments