summaryrefslogtreecommitdiff
path: root/flycheck-android-experimental.el
diff options
context:
space:
mode:
Diffstat (limited to 'flycheck-android-experimental.el')
-rw-r--r--flycheck-android-experimental.el18
1 files changed, 18 insertions, 0 deletions
diff --git a/flycheck-android-experimental.el b/flycheck-android-experimental.el
index 00e0a4e..181b056 100644
--- a/flycheck-android-experimental.el
+++ b/flycheck-android-experimental.el
@@ -11,10 +11,14 @@
(require 'flycheck)
+(defvar flycheck-android-sessiondir nil
+ "Session directory used for caching.")
+
(flycheck-define-checker android-java
"Java syntax checker using javac."
:command ("python"
(eval (flycheck-android-find-tool "java"))
+ (eval (flycheck-android-get-sessiondir))
(eval buffer-file-name)
source)
:error-patterns
@@ -37,6 +41,20 @@ TOOL=name of tool"
(concat (file-name-directory (symbol-file 'flycheck-android-find-tool))
(file-name-as-directory "bin")))))
+(defun flycheck-android-remove-sessiondir ()
+ "Delete session dir if it exists and unsets the variable."
+ (when flycheck-android-sessiondir
+ (delete-directory flycheck-android-sessiondir t)
+ (setq flycheck-android-sessiondir nil)))
+
+(defun flycheck-android-get-sessiondir ()
+ "Return sessiondir if already set otherwise create and set it."
+ (or flycheck-android-sessiondir
+ (progn
+ (add-hook 'kill-emacs-hook 'flycheck-android-remove-sessiondir)
+ (setq flycheck-android-sessiondir
+ (make-temp-file "flycheck-android" t)))))
+
(add-to-list 'flycheck-checkers 'android-java)
(provide 'flycheck-android-experimental)