summaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
Diffstat (limited to 'autoload')
-rw-r--r--autoload/ale/ant.vim41
-rw-r--r--autoload/ale/java.vim6
2 files changed, 47 insertions, 0 deletions
diff --git a/autoload/ale/ant.vim b/autoload/ale/ant.vim
new file mode 100644
index 00000000..689b444b
--- /dev/null
+++ b/autoload/ale/ant.vim
@@ -0,0 +1,41 @@
+" Author: Andrew Lee <andrewl@mbda.fun>.
+" Inspired by ale/gradle.vim by Michael Pardo <michael@michaelpardo.com>
+" Description: Functions for working with Ant projects.
+
+" Given a buffer number, find an Ant project root
+function! ale#ant#FindProjectRoot(buffer) abort
+ let l:build_xml_path = ale#path#FindNearestFile(a:buffer, 'build.xml')
+
+ if !empty(l:build_xml_path)
+ return fnamemodify(l:build_xml_path, ':h')
+ endif
+
+ return ''
+endfunction
+
+" Given a buffer number, find the path to the `ant` executable. Returns an empty
+" string if cannot find the executable.
+function! ale#ant#FindExecutable(buffer) abort
+ if executable('ant')
+ return 'ant'
+ endif
+
+ return ''
+endfunction
+
+" Given a buffer number, build a command to print the classpath of the root
+" project. Returns an empty string if cannot build the command.
+function! ale#ant#BuildClasspathCommand(buffer) abort
+ let l:executable = ale#ant#FindExecutable(a:buffer)
+ let l:project_root = ale#ant#FindProjectRoot(a:buffer)
+
+ if !empty(l:executable) && !empty(l:project_root)
+ return ale#path#CdString(l:project_root)
+ \ . ale#Escape(l:executable)
+ \ . ' classpath'
+ \ . ' -S'
+ \ . ' -q'
+ endif
+
+ return ''
+endfunction
diff --git a/autoload/ale/java.vim b/autoload/ale/java.vim
index b7fd10bd..e641ac6c 100644
--- a/autoload/ale/java.vim
+++ b/autoload/ale/java.vim
@@ -16,5 +16,11 @@ function! ale#java#FindProjectRoot(buffer) abort
return fnamemodify(l:maven_pom_file, ':h')
endif
+ let l:ant_root = ale#ant#FindProjectRoot(a:buffer)
+
+ if !empty(l:ant_root)
+ return l:ant_root
+ endif
+
return ''
endfunction