eclim.vim 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. " MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
  2. " PLugin: https://eclim.org
  3. " vim: et ts=2 sts=2 sw=2
  4. scriptencoding utf-8
  5. if !exists(':ProjectCreate')
  6. finish
  7. endif
  8. function! airline#extensions#eclim#creat_line(...)
  9. if &filetype == "tree"
  10. let builder = a:1
  11. call builder.add_section('airline_a', ' Project ')
  12. call builder.add_section('airline_b', ' %f ')
  13. call builder.add_section('airline_c', '')
  14. return 1
  15. endif
  16. endfunction
  17. function! airline#extensions#eclim#get_warnings()
  18. " Cache vavlues, so that it isn't called too often
  19. if exists("s:eclim_errors") &&
  20. \ get(b:, 'airline_changenr', 0) == changenr()
  21. return s:eclim_errors
  22. endif
  23. let eclimList = eclim#display#signs#GetExisting()
  24. let s:eclim_errors = ''
  25. if !empty(eclimList)
  26. " Remove any non-eclim signs (see eclim#display#signs#Update)
  27. " First check for just errors since they are more important.
  28. " If there are no errors, then check for warnings.
  29. let errorList = filter(copy(eclimList), 'v:val.name =~ "^\\(qf_\\)\\?\\(error\\)$"')
  30. if (empty(errorList))
  31. " use the warnings
  32. call filter(eclimList, 'v:val.name =~ "^\\(qf_\\)\\?\\(warning\\)$"')
  33. let type = 'W'
  34. else
  35. " Use the errors
  36. let eclimList = errorList
  37. let type = 'E'
  38. endif
  39. if !empty(eclimList)
  40. let errorsLine = eclimList[0]['line']
  41. let errorsNumber = len(eclimList)
  42. let errors = "[Eclim:" . type . " line:".string(errorsLine)." (".string(errorsNumber).")]"
  43. if !exists(':SyntasticCheck') || SyntasticStatuslineFlag() == ''
  44. let s:eclim_errors = errors.(g:airline_symbols.space)
  45. endif
  46. endif
  47. endif
  48. let b:airline_changenr = changenr()
  49. return s:eclim_errors
  50. endfunction
  51. function! airline#extensions#eclim#init(ext)
  52. call airline#parts#define_function('eclim', 'airline#extensions#eclim#get_warnings')
  53. call a:ext.add_statusline_func('airline#extensions#eclim#creat_line')
  54. endfunction