diff --git a/modules/lang/kotlin/autoload.el b/modules/lang/kotlin/autoload.el new file mode 100644 index 000000000..a15620fed --- /dev/null +++ b/modules/lang/kotlin/autoload.el @@ -0,0 +1,15 @@ +;;; lang/kotlin/autoload.el -*- lexical-binding: t; -*- + +;;;autoload +(defun +kotlin/locate-gradlew-file () + "Gradlew file location for this project." + (locate-dominating-file buffer-file-name "gradlew")) + +;;;###autoload +(defun +kotlin/run-gradlew (command) + "Run gradlew in this project." + (interactive "sCommand: ") + (let ((default-directory (+kotlin/locate-gradlew-file)) + (compilation-read-command nil) + (compile-command (format "sh gradlew %s" command))) + (call-interactively #'compile))) diff --git a/modules/lang/kotlin/config.el b/modules/lang/kotlin/config.el new file mode 100644 index 000000000..dc02f1035 --- /dev/null +++ b/modules/lang/kotlin/config.el @@ -0,0 +1,16 @@ +;;; lang/kotlin/config.el -*- lexical-binding: t; -*- + +(after! kotlin-mode + (set-docsets! 'kotlin-mode "Kotlin") + + (map! :map kotlin-mode-map + :localleader + :prefix ("b" . "build") + :desc "gradlew assemble" "a" (λ! (+kotlin/run-gradlew "assemble")) + :desc "gradlew build" "b" (λ! (+kotlin/run-gradlew "build")) + :desc "gradlew test" "t" (λ! (+kotlin/run-gradlew "test")))) + +(def-package! flycheck-kotlin + :when (featurep! :tools flycheck) + :after kotlin-mode + :config (add-hook 'kotlin-mode-hook #'flycheck-kotlin-setup)) diff --git a/modules/lang/kotlin/doctor.el b/modules/lang/kotlin/doctor.el new file mode 100644 index 000000000..7dd70d076 --- /dev/null +++ b/modules/lang/kotlin/doctor.el @@ -0,0 +1,4 @@ +;;; lang/kotlin/doctor.el -*- lexical-binding: t; -*- + +(unless (executable-find "ktlint") + (warn "ktlint not found. flycheck-kotlin won't work.")) diff --git a/modules/lang/kotlin/packages.el b/modules/lang/kotlin/packages.el new file mode 100644 index 000000000..f7c3361dc --- /dev/null +++ b/modules/lang/kotlin/packages.el @@ -0,0 +1,7 @@ +;; -*- no-byte-compile: t; -*- +;;; lang/kotlin/packages.el + +(package! kotlin-mode) + +(when (featurep! :tools flycheck) + (package! flycheck-kotlin))