;;; defuns-java.el ---

;;;###autoload
(defun narf/java-project-package ()
  (if (eq major-mode 'java-mode)
    (s-chop-suffix "." (s-replace "/" "." (f-dirname (f-relative (buffer-file-name)
                                                                 (concat (narf/project-root) "/src/")))))
    ""))

;;;###autoload
(defun narf/java-class-name ()
  (if (eq major-mode 'java-mode)
      (f-no-ext (f-base (buffer-file-name)))
    ""))

;; yasnippet defuns
;;;###autoload
(defun narf/java-android-mode-is-layout-file ()
  (and android-mode
       (eq major-mode 'nxml-mode)
       (string-equal (file-name-base (directory-file-name default-directory)) "layout")))

;;;###autoload
(defun narf/java-android-mode-in-tags (&rest tags)
  (-contains? tags (android-mode-tag-name)))

;;;###autoload
(defun narf/java-android-mode-tag-name ()
  (save-excursion
    (let (beg end)
      (nxml-backward-up-element)
      (evil-forward-word-begin)
      (setq beg (point))
      (evil-forward-WORD-end)
      (setq end (1+ (point)))
      (buffer-substring-no-properties beg end))))

;;;###autoload
(defun narf|android-mode-enable-maybe ()
  (let ((root (narf/project-root)))
    (when (or (narf/project-has-files "local.properties" root)
              (narf/project-has-files "AndroidManifest.xml" root)
              (narf/project-has-files "src/main/AndroidManifest.xml" root))
      (android-mode +1)
      (narf/set-build-command "./gradlew %s" "build.gradle"))))

(provide 'defuns-java)
;;; defuns-java.el ends here