diff --git a/init.example.el b/init.example.el index 7046dd8e6..8096291c9 100644 --- a/init.example.el +++ b/init.example.el @@ -103,6 +103,7 @@ ;;(java +meghanada) ; the poster child for carpal tunnel syndrome ;;javascript ; all(hope(abandon(ye(who(enter(here)))))) ;;julia ; a better, faster MATLAB + ;;kotlin ; a better, slicker Java(Script) ;;latex ; writing papers in Emacs has never been so fun ;;ledger ; an accounting system in Emacs ;;lua ; one-based indices? one-based indices diff --git a/modules/lang/kotlin/autoload.el b/modules/lang/kotlin/autoload.el new file mode 100644 index 000000000..2eee6cd90 --- /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..63eabc017 --- /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))