diff options
Diffstat (limited to 'vim/bundle/syntastic/syntax_checkers/java')
m--------- | vim/bundle/syntastic | 0 | ||||
-rw-r--r-- | vim/bundle/syntastic/syntax_checkers/java/checkstyle.vim | 85 | ||||
-rw-r--r-- | vim/bundle/syntastic/syntax_checkers/java/javac.vim | 427 |
3 files changed, 0 insertions, 512 deletions
diff --git a/vim/bundle/syntastic b/vim/bundle/syntastic new file mode 160000 +Subproject cee74e0c1af934065fd1b3046e53cda76574f70 diff --git a/vim/bundle/syntastic/syntax_checkers/java/checkstyle.vim b/vim/bundle/syntastic/syntax_checkers/java/checkstyle.vim deleted file mode 100644 index f4eee5e..0000000 --- a/vim/bundle/syntastic/syntax_checkers/java/checkstyle.vim +++ /dev/null @@ -1,85 +0,0 @@ -"============================================================================ -"File: checkstyle.vim -"Description: Syntax checking plugin for syntastic.vim -"Maintainer: Dmitry Geurkov <d.geurkov at gmail dot com> -"License: This program is free software. It comes without any warranty, -" to the extent permitted by applicable law. You can redistribute -" it and/or modify it under the terms of the Do What The Fuck You -" Want To Public License, Version 2, as published by Sam Hocevar. -" See http://sam.zoy.org/wtfpl/COPYING for more details. -" -" Tested with checkstyle 5.5 -"============================================================================ - -if exists('g:loaded_syntastic_java_checkstyle_checker') - finish -endif -let g:loaded_syntastic_java_checkstyle_checker = 1 - -if !exists('g:syntastic_java_checkstyle_classpath') - let g:syntastic_java_checkstyle_classpath = 'checkstyle-6.10.1-all.jar' -endif - -if !exists('g:syntastic_java_checkstyle_conf_file') - let g:syntastic_java_checkstyle_conf_file = 'sun_checks.xml' -endif - -let s:save_cpo = &cpo -set cpo&vim - -function! SyntaxCheckers_java_checkstyle_IsAvailable() dict - if !executable(self.getExec()) - return 0 - endif - - let conf_file = expand(g:syntastic_java_checkstyle_conf_file, 1) - call self.log('filereadable(' . string(conf_file) . ') = ' . filereadable(conf_file)) - - return filereadable(conf_file) -endfunction - -function! SyntaxCheckers_java_checkstyle_GetLocList() dict - - " classpath - if !exists('s:sep') - let s:sep = syntastic#util#isRunningWindows() || has('win32unix') ? ';' : ':' - endif - let classpath = join(map( split(g:syntastic_java_checkstyle_classpath, s:sep, 1), 'expand(v:val, 1)' ), s:sep) - call self.log('classpath =', classpath) - - " forced options - let opts = [] - if classpath !=# '' - call extend(opts, ['-cp', classpath]) - endif - call extend(opts, [ - \ 'com.puppycrawl.tools.checkstyle.Main', - \ '-c', expand(g:syntastic_java_checkstyle_conf_file, 1), - \ '-f', 'xml' ]) - - " filename - let fname = syntastic#util#shescape( expand('%:p:h', 1) . syntastic#util#Slash() . expand('%:t', 1) ) - if has('win32unix') - let fname = substitute(syntastic#util#system('cygpath -m ' . fname), '\m\%x00', '', 'g') - endif - - let makeprg = self.makeprgBuild({ 'args_after': opts, 'fname': fname }) - - let errorformat = '%f:%t:%l:%c:%m' - - return SyntasticMake({ - \ 'makeprg': makeprg, - \ 'errorformat': errorformat, - \ 'preprocess': 'checkstyle', - \ 'subtype': 'Style' }) -endfunction - -call g:SyntasticRegistry.CreateAndRegisterChecker({ - \ 'filetype': 'java', - \ 'name': 'checkstyle', - \ 'exec': 'java'}) - -let &cpo = s:save_cpo -unlet s:save_cpo - -" vim: set sw=4 sts=4 et fdm=marker: diff --git a/vim/bundle/syntastic/syntax_checkers/java/javac.vim b/vim/bundle/syntastic/syntax_checkers/java/javac.vim deleted file mode 100644 index 948c244..0000000 --- a/vim/bundle/syntastic/syntax_checkers/java/javac.vim +++ /dev/null @@ -1,427 +0,0 @@ -"============================================================================ -"File: javac.vim -"Description: Syntax checking plugin for syntastic.vim -"Maintainer: Jochen Keil <jochen.keil at gmail dot com> -" Dmitry Geurkov <d.geurkov at gmail dot com> -"License: This program is free software. It comes without any warranty, -" to the extent permitted by applicable law. You can redistribute -" it and/or modify it under the terms of the Do What The Fuck You -" Want To Public License, Version 2, as published by Sam Hocevar. -" See http://sam.zoy.org/wtfpl/COPYING for more details. -"============================================================================ - -if exists('g:loaded_syntastic_java_javac_checker') - finish -endif -let g:loaded_syntastic_java_javac_checker = 1 -let g:syntastic_java_javac_maven_pom_tags = ['build', 'properties'] -let g:syntastic_java_javac_maven_pom_properties = {} -let s:has_maven = 0 - -let s:save_cpo = &cpo -set cpo&vim - -" Checker options {{{1 - -if !exists('g:syntastic_java_javac_executable') - let g:syntastic_java_javac_executable = 'javac' -endif - -if !exists('g:syntastic_java_maven_executable') - let g:syntastic_java_maven_executable = 'mvn' -endif - -if !exists('g:syntastic_java_javac_options') - let g:syntastic_java_javac_options = '-Xlint' -endif - -if !exists('g:syntastic_java_maven_options') - let g:syntastic_java_maven_options = '' -endif - -if !exists('g:syntastic_java_javac_classpath') - let g:syntastic_java_javac_classpath = '' -endif - -if !exists('g:syntastic_java_javac_delete_output') - let g:syntastic_java_javac_delete_output = 1 -endif - -if !exists('g:syntastic_java_javac_autoload_maven_classpath') - let g:syntastic_java_javac_autoload_maven_classpath = 1 -endif - -if !exists('g:syntastic_java_javac_config_file_enabled') - let g:syntastic_java_javac_config_file_enabled = 0 -endif - -if !exists('g:syntastic_java_javac_config_file') - let g:syntastic_java_javac_config_file = '.syntastic_javac_config' -endif - -if !exists('g:syntastic_java_javac_custom_classpath_command') - let g:syntastic_java_javac_custom_classpath_command = '' -endif - -if !exists('g:syntastic_java_javac_maven_pom_ftime') - let g:syntastic_java_javac_maven_pom_ftime = {} -endif - -if !exists('g:syntastic_java_javac_maven_pom_classpath') - let g:syntastic_java_javac_maven_pom_classpath = {} -endif - -" }}}1 - -" Constants {{{1 - -let s:_FILE_SHORTCUTS = { - \ '%FILE_PATH%': '%:p', - \ '%FILE_NAME%': '%:t', - \ '%FILE_DIR%': '%:p:h', - \ } -lockvar! s:_FILE_SHORTCUTS - -" }}}1 - -" Commands {{{1 - -command! SyntasticJavacEditClasspath call s:EditClasspath() -command! SyntasticJavacEditConfig call s:EditConfig() - -" }}}1 - -function! SyntaxCheckers_java_javac_IsAvailable() dict " {{{1 - let s:has_maven = executable(expand(g:syntastic_java_maven_executable, 1)) - return executable(expand(g:syntastic_java_javac_executable, 1)) -endfunction " }}}1 - -function! SyntaxCheckers_java_javac_GetLocList() dict " {{{1 - let javac_opts = g:syntastic_java_javac_options - - let output_dir = '' - if g:syntastic_java_javac_delete_output - let output_dir = syntastic#util#tmpdir() - let javac_opts .= ' -d ' . syntastic#util#shescape(output_dir) - endif - - " load classpath from config file - if g:syntastic_java_javac_config_file_enabled - call s:LoadConfigFile() - endif - - - " add classpathes to javac_classpath {{{2 - let javac_classpath = '' - - for path in split(g:syntastic_java_javac_classpath, s:ClassSep()) - if path !=# '' - try - let ps = glob(path, 1, 1) - catch - let ps = split(glob(path, 1), "\n") - endtry - if type(ps) == type([]) - for p in ps - let javac_classpath = s:AddToClasspath(javac_classpath, p) - endfor - else - let javac_classpath = s:AddToClasspath(javac_classpath, ps) - endif - endif - endfor - - if s:has_maven && g:syntastic_java_javac_autoload_maven_classpath - if !g:syntastic_java_javac_delete_output - let javac_opts .= ' -d ' . syntastic#util#shescape(s:MavenOutputDirectory()) - endif - let javac_classpath = s:AddToClasspath(javac_classpath, s:GetMavenClasspath()) - endif - " }}}2 - - " load custom classpath {{{2 - if g:syntastic_java_javac_custom_classpath_command !=# '' - " Pre-process the classpath command string a little. - let classpath_command = g:syntastic_java_javac_custom_classpath_command - for [key, val] in items(s:_FILE_SHORTCUTS) - let classpath_command = substitute(classpath_command, '\V' . key, syntastic#util#shexpand(val), 'g') - endfor - let lines = syntastic#util#system(classpath_command) - if syntastic#util#isRunningWindows() || has('win32unix') - let lines = substitute(lines, "\r\n", "\n", 'g') - endif - for l in split(lines, "\n") - let javac_classpath = s:AddToClasspath(javac_classpath, l) - endfor - endif - - if javac_classpath !=# '' - let javac_opts .= ' -cp ' . syntastic#util#shexpand(javac_classpath) - endif - " }}}2 - - let fname = expand('%:p:h', 1) . syntastic#util#Slash() . expand ('%:t', 1) - - if has('win32unix') - let fname = syntastic#util#CygwinPath(fname) - endif - - let makeprg = self.makeprgBuild({ - \ 'args': javac_opts, - \ 'fname': syntastic#util#shescape(fname) }) - - " unashamedly stolen from *errorformat-javac* (quickfix.txt) and modified to include error types - let errorformat = - \ '%E%f:%l: error: %m,'. - \ '%W%f:%l: warning: %m,'. - \ '%E%f:%l: %m,'. - \ '%Z%p^,'. - \ '%-G%.%#' - - if output_dir !=# '' - silent! call mkdir(output_dir, 'p') - endif - let errors = SyntasticMake({ - \ 'makeprg': makeprg, - \ 'errorformat': errorformat, - \ 'postprocess': ['cygwinRemoveCR'] }) - - if output_dir !=# '' - call syntastic#util#rmrf(output_dir) - endif - return errors - -endfunction " }}}1 - -" Utilities {{{1 - -function! s:RemoveCarriageReturn(line) " {{{2 - return substitute(a:line, "\r", '', 'g') -endfunction " }}}2 - -function! s:ClassSep() " {{{2 - return (syntastic#util#isRunningWindows() || has('win32unix')) ? ';' : ':' -endfunction " }}}2 - -function! s:AddToClasspath(classpath, path) " {{{2 - if a:path ==# '' - return a:classpath - endif - return (a:classpath !=# '') ? a:classpath . s:ClassSep() . a:path : a:path -endfunction " }}}2 - -function! s:SplitClasspath(classpath) " {{{2 - return split(a:classpath, s:ClassSep()) -endfunction " }}}2 - -function! s:LoadConfigFile() " {{{2 - if filereadable(expand(g:syntastic_java_javac_config_file, 1)) - execute 'source ' . fnameescape(expand(g:syntastic_java_javac_config_file, 1)) - endif -endfunction " }}}2 - -function! s:SaveClasspath() " {{{2 - " build classpath from lines - let path = '' - let lines = getline(1, line('$')) - for l in lines - let path = s:AddToClasspath(path, l) - endfor - " save classpath to config file - if g:syntastic_java_javac_config_file_enabled - if filereadable(expand(g:syntastic_java_javac_config_file, 1)) - " load lines from config file - let lines = readfile(expand(g:syntastic_java_javac_config_file, 1)) - " strip g:syntastic_java_javac_classpath options from config file lines - let i = 0 - while i < len(lines) - if match(lines[i], 'g:syntastic_java_javac_classpath') != -1 - call remove(lines, i) - else - let i += 1 - endif - endwhile - else - let lines = [] - endif - " add new g:syntastic_java_javac_classpath option to config - call add(lines, 'let g:syntastic_java_javac_classpath = ' . string(path)) - " save config file lines - call writefile(lines, expand(g:syntastic_java_javac_config_file, 1)) - endif - " set new classpath - let g:syntastic_java_javac_classpath = path - let &modified = 0 -endfunction " }}}2 - -function! s:EditClasspath() " {{{2 - let command = 'syntastic javac classpath' - let winnr = bufwinnr('^' . command . '$') - if winnr < 0 - let path = [] - let pathlines = split(g:syntastic_java_javac_classpath, "\n") - for p in pathlines - call extend(path, s:SplitClasspath(p)) - endfor - execute (len(path) + 5) . 'sp ' . fnameescape(command) - - augroup syntastic - autocmd BufWriteCmd <buffer> call s:SaveClasspath() | bwipeout - augroup END - - setlocal buftype=acwrite bufhidden=wipe nobuflisted noswapfile nowrap number - for p in path - call append(line('$') - 1, p) - endfor - let &modified = 0 - else - execute winnr . 'wincmd w' - endif -endfunction " }}}2 - -function! s:SaveConfig() " {{{2 - " get lines - let lines = getline(1, line('$')) - if g:syntastic_java_javac_config_file_enabled - " save config file lines - call writefile(lines, expand(g:syntastic_java_javac_config_file, 1)) - endif - let &modified = 0 -endfunction " }}}2 - -function! s:EditConfig() " {{{2 - if !g:syntastic_java_javac_config_file_enabled - return - endif - - let command = 'syntastic javac config' - let winnr = bufwinnr('^' . command . '$') - if winnr < 0 - let lines = [] - if filereadable(expand(g:syntastic_java_javac_config_file, 1)) - let lines = readfile(expand(g:syntastic_java_javac_config_file, 1)) - endif - execute (len(lines) + 5) . 'sp ' . fnameescape(command) - - augroup syntastic - autocmd BufWriteCmd <buffer> call s:SaveConfig() | bwipeout - augroup END - - setlocal ft=vim buftype=acwrite bufhidden=wipe nobuflisted noswapfile nowrap number - for l in lines - call append(line('$') - 1, l) - endfor - let &modified = 0 - else - execute winnr . 'wincmd w' - endif -endfunction " }}}2 - -function! s:GetMavenProperties() " {{{2 - let mvn_properties = {} - let pom = syntastic#util#findFileInParent('pom.xml', expand('%:p:h', 1)) - if s:has_maven && filereadable(pom) - if !has_key(g:syntastic_java_javac_maven_pom_properties, pom) - let mvn_cmd = syntastic#util#shexpand(g:syntastic_java_maven_executable) . - \ ' -f ' . syntastic#util#shescape(pom) . - \ ' ' . g:syntastic_java_maven_options - let mvn_is_managed_tag = 1 - let mvn_settings_output = split(syntastic#util#system(mvn_cmd . ' help:effective-pom'), "\n") - let current_path = 'project' - for line in mvn_settings_output - let matches = matchlist(line, '\m^\s*<\([a-zA-Z0-9\-\.]\+\)>\s*$') - if mvn_is_managed_tag && !empty(matches) - let mvn_is_managed_tag = index(g:syntastic_java_javac_maven_pom_tags, matches[1]) >= 0 - let current_path .= '.' . matches[1] - else - let matches = matchlist(line, '\m^\s*</\([a-zA-Z0-9\-\.]\+\)>\s*$') - if !empty(matches) - let mvn_is_managed_tag = index(g:syntastic_java_javac_maven_pom_tags, matches[1]) < 0 - let current_path = substitute(current_path, '\m\.' . matches[1] . '$', '', '') - else - let matches = matchlist(line, '\m^\s*<\([a-zA-Z0-9\-\.]\+\)>\(.\+\)</[a-zA-Z0-9\-\.]\+>\s*$') - if mvn_is_managed_tag && !empty(matches) - let mvn_properties[current_path . '.' . matches[1]] = matches[2] - endif - endif - endif - endfor - let g:syntastic_java_javac_maven_pom_properties[pom] = mvn_properties - endif - return g:syntastic_java_javac_maven_pom_properties[pom] - endif - return mvn_properties -endfunction " }}}2 - -function! s:GetMavenClasspath() " {{{2 - let pom = syntastic#util#findFileInParent('pom.xml', expand('%:p:h', 1)) - if s:has_maven && filereadable(pom) - if !has_key(g:syntastic_java_javac_maven_pom_ftime, pom) || g:syntastic_java_javac_maven_pom_ftime[pom] != getftime(pom) - let mvn_cmd = syntastic#util#shexpand(g:syntastic_java_maven_executable) . - \ ' -f ' . syntastic#util#shescape(pom) . - \ ' ' . g:syntastic_java_maven_options - let mvn_classpath_output = split(syntastic#util#system(mvn_cmd . ' dependency:build-classpath -DincludeScope=test'), "\n") - let mvn_classpath = '' - let class_path_next = 0 - - for line in mvn_classpath_output - if class_path_next == 1 - let mvn_classpath = s:RemoveCarriageReturn(line) - break - endif - if stridx(line, 'Dependencies classpath:') >= 0 - let class_path_next = 1 - endif - endfor - - let mvn_properties = s:GetMavenProperties() - - let sep = syntastic#util#Slash() - let output_dir = get(mvn_properties, 'project.build.outputDirectory', join(['target', 'classes'], sep)) - let mvn_classpath = s:AddToClasspath(mvn_classpath, output_dir) - - let test_output_dir = get(mvn_properties, 'project.build.testOutputDirectory', join(['target', 'test-classes'], sep)) - let mvn_classpath = s:AddToClasspath(mvn_classpath, test_output_dir) - - let g:syntastic_java_javac_maven_pom_ftime[pom] = getftime(pom) - let g:syntastic_java_javac_maven_pom_classpath[pom] = mvn_classpath - endif - return g:syntastic_java_javac_maven_pom_classpath[pom] - endif - return '' -endfunction " }}}2 - -function! s:MavenOutputDirectory() " {{{2 - let pom = syntastic#util#findFileInParent('pom.xml', expand('%:p:h', 1)) - if s:has_maven && filereadable(pom) - let mvn_properties = s:GetMavenProperties() - let output_dir = get(mvn_properties, 'project.properties.build.dir', getcwd()) - - let sep = syntastic#util#Slash() - let src_main_dir = get(mvn_properties, 'project.build.sourceDirectory', join(['src', 'main', 'java'], sep)) - let src_test_dir = get(mvn_properties, 'project.build.testsourceDirectory', join(['src', 'test', 'java'], sep)) - if stridx(expand('%:p:h', 1), src_main_dir) >= 0 - let output_dir = get(mvn_properties, 'project.build.outputDirectory', join ([output_dir, 'target', 'classes'], sep)) - endif - if stridx(expand('%:p:h', 1), src_test_dir) >= 0 - let output_dir = get(mvn_properties, 'project.build.testOutputDirectory', join([output_dir, 'target', 'test-classes'], sep)) - endif - - if has('win32unix') - let output_dir = syntastic#util#CygwinPath(output_dir) - endif - return output_dir - endif - return '.' -endfunction " }}}2 - -" }}}1 - -call g:SyntasticRegistry.CreateAndRegisterChecker({ - \ 'filetype': 'java', - \ 'name': 'javac'}) - -let &cpo = s:save_cpo -unlet s:save_cpo - -" vim: set sw=4 sts=4 et fdm=marker: |