closurecompiler.vim 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. "============================================================================
  2. "File: closurecompiler.vim
  3. "Description: Javascript syntax checker - using Google Closure Compiler
  4. "Maintainer: Motohiro Takayama <mootoh at gmail dot com>
  5. "License: This program is free software. It comes without any warranty,
  6. " to the extent permitted by applicable law. You can redistribute
  7. " it and/or modify it under the terms of the Do What The Fuck You
  8. " Want To Public License, Version 2, as published by Sam Hocevar.
  9. " See http://sam.zoy.org/wtfpl/COPYING for more details.
  10. "============================================================================
  11. if exists('g:loaded_syntastic_javascript_closurecompiler_checker')
  12. finish
  13. endif
  14. let g:loaded_syntastic_javascript_closurecompiler_checker = 1
  15. let s:save_cpo = &cpo
  16. set cpo&vim
  17. function! SyntaxCheckers_javascript_closurecompiler_IsAvailable() dict
  18. call syntastic#log#deprecationWarn('javascript_closure_compiler_path', 'javascript_closurecompiler_path')
  19. if !executable(self.getExec())
  20. return 0
  21. endif
  22. let s:has_script = exists('g:syntastic_javascript_closurecompiler_script')
  23. if s:has_script
  24. return 1
  25. endif
  26. let cp = get(g:, 'syntastic_javascript_closurecompiler_path', '')
  27. call self.log('g:syntastic_javascript_closurecompiler_path =', cp)
  28. let jar = expand(cp, 1)
  29. call self.log('filereadable(' . string(jar) . ') = ' . filereadable(jar))
  30. return filereadable(jar)
  31. endfunction
  32. function! SyntaxCheckers_javascript_closurecompiler_GetLocList() dict
  33. call syntastic#log#deprecationWarn('javascript_closure_compiler_options', 'javascript_closurecompiler_args')
  34. call syntastic#log#deprecationWarn('javascript_closure_compiler_file_list', 'javascript_closurecompiler_file_list')
  35. let buf = bufnr('')
  36. let flist = expand(syntastic#util#bufVar(buf, 'javascript_closurecompiler_file_list'), 1)
  37. if filereadable(flist)
  38. let file_list = map( readfile(flist), 'expand(v:var, 1)' )
  39. else
  40. let file_list = [bufname(buf)]
  41. endif
  42. let makeprg = self.makeprgBuild({
  43. \ 'exe_after': (s:has_script ? [] : ['-jar', expand(g:syntastic_javascript_closurecompiler_path, 1)]),
  44. \ 'args_after': '--js',
  45. \ 'fname': file_list })
  46. let errorformat =
  47. \ '%-GOK,'.
  48. \ '%E%f:%l: ERROR - %m,'.
  49. \ '%W%f:%l: WARNING - %m,'.
  50. \ '%Z%p^'
  51. return SyntasticMake({
  52. \ 'makeprg': makeprg,
  53. \ 'errorformat': errorformat })
  54. endfunction
  55. call g:SyntasticRegistry.CreateAndRegisterChecker({
  56. \ 'filetype': 'javascript',
  57. \ 'name': 'closurecompiler',
  58. \ 'exec': get(g:, 'syntastic_javascript_closurecompiler_script', 'java')})
  59. let &cpo = s:save_cpo
  60. unlet s:save_cpo
  61. " vim: set sw=4 sts=4 et fdm=marker: