emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/geiser-kawa 34b68ce 052/119: Add check for deps with run-k


From: Philip Kaludercic
Subject: [nongnu] elpa/geiser-kawa 34b68ce 052/119: Add check for deps with run-kawa is called. Uses emacs advice on run-kawa.
Date: Sun, 1 Aug 2021 18:30:37 -0400 (EDT)

branch: elpa/geiser-kawa
commit 34b68ce5b3b197dc0c0ed54f5c68cb24b15dd8c0
Author: spellcard199 <spellcard199@protonmail.com>
Commit: spellcard199 <spellcard199@protonmail.com>

    Add check for deps with run-kawa is called. Uses emacs advice on run-kawa.
---
 elisp/geiser-kawa.el | 55 +++++++++++++++++++++++++++++++++++++++++++---------
 quickstart.el        | 10 ++++++----
 2 files changed, 52 insertions(+), 13 deletions(-)

diff --git a/elisp/geiser-kawa.el b/elisp/geiser-kawa.el
index 59d5d26..f9b8dc2 100644
--- a/elisp/geiser-kawa.el
+++ b/elisp/geiser-kawa.el
@@ -75,16 +75,9 @@
 ;; End of adaptations for making this package separate from geiser
 
 
-;; Download, compile and package "kawa-geiser" and its recursive
-;; dependencies into a fat jar.
-(defun geiser-kawa-mvn-package-java-deps()
-  (interactive)
-  (let ((default-directory geiser-kawa-dir))
-    (compile "./mvnw package")))
-
 ;; Using `mvn package' from the pom.xml's directory should produce a
 ;; jar containing all the java dependencies.
-(defcustom geiser-kawa-kawa-geiser-jar-path
+(defcustom geiser-kawa-deps-jar-path
   (expand-file-name
    "./target/kawa-geiser-0.1-SNAPSHOT-jar-with-dependencies.jar"
    geiser-kawa-dir)
@@ -92,6 +85,47 @@
   :type 'string
   :group 'geiser-kawa)
 
+;; Download, compile and package "kawa-geiser" and its recursive
+;; dependencies into a fat jar.
+(defun geiser-kawa-deps-mvn-package()
+  (interactive)
+  (let* ((default-directory geiser-kawa-dir)
+         (mvn-buf (compile "./mvnw package")))
+    (when mvn-buf
+      (let ((save-buf (current-buffer)))
+        (switch-to-buffer-other-window mvn-buf)
+        (end-of-buffer)
+        (switch-to-buffer-other-window save-buf)))))
+
+(defun geiser-kawa--deps-run-kawa-advice-add()
+  (add-function :override
+                (symbol-function 'run-kawa)
+                #'geiser-kawa--deps-run-kawa-advice))
+
+(defun geiser-kawa--deps-run-kawa-advice-remove()
+  (remove-function (symbol-function 'run-kawa)
+                   #'geiser-kawa--deps-run-kawa-advice))
+
+(defun geiser-kawa--deps-run-kawa-unadviced()
+  (geiser-kawa--deps-run-kawa-advice-remove)
+  (run-kawa)
+  (geiser-kawa--deps-run-kawa-advice-add))
+
+(defun geiser-kawa--deps-run-kawa-removecompilhook(buf desc)
+  (geiser-kawa--deps-run-kawa-unadviced)
+  (remove-hook 'compilation-finish-functions
+               #'geiser-kawa--deps-run-kawa-remove-compil-hook))
+
+(defun geiser-kawa--deps-run-kawa-advice()
+  (if (file-exists-p geiser-kawa-deps-jar-path)
+      (geiser-kawa--deps-run-kawa-unadviced)
+    (when (y-or-n-p
+           "geiser-kawa depends on additional java libraries. Do you want to 
download and compile them now?")
+      (add-hook
+       'compilation-finish-functions
+       #'geiser-kawa--deps-run-kawa-removecompilhook)
+      (geiser-kawa-deps-mvn-package))))
+
 
 ;;; Customization:
 
@@ -154,7 +188,7 @@
                      (concat lib-dir "jline.jar"))
                   nil))
             nil)
-          (list geiser-kawa-kawa-geiser-jar-path))))
+          (list geiser-kawa-deps-jar-path))))
     (mapconcat #'identity jars ":")))
 
 (defvar geiser-kawa--arglist
@@ -389,6 +423,9 @@ Argument MOD is passed by geiser, but it's not used here."
 (geiser-impl--add-to-alist 'regexp "\\.scm$" 'kawa t)
 (geiser-impl--add-to-alist 'regexp "\\.sld$" 'kawa t)
 
+;; Check for kawa-geiser jar each time `run-kawa' is called.
+(geiser-kawa--deps-run-kawa-advice-add)
+
 (provide 'geiser-kawa)
 
 ;;; geiser-kawa.el ends here
diff --git a/quickstart.el b/quickstart.el
index 74f99cd..1351f5a 100644
--- a/quickstart.el
+++ b/quickstart.el
@@ -9,12 +9,14 @@
 (require 'geiser-mode)
 (defun run-kawa-after-compilation-finishes (buffer desc)
   ;; Use included Kawa, to avoid issues with unsupported old Kawa versions (< 
3.1.1)
-  (setq geiser-kawa-use-kawa-version-included-in-kawa-geiser t)
+  (setq geiser-kawa-use-included-kawa t)
   (run-kawa)
   (switch-to-buffer-other-window "*scratch*")
   (geiser-impl--set-buffer-implementation 'kawa)
   (geiser-mode)
-  (remove-hook 'compilation-finish-functions 
#'run-kawa-after-compilation-finishes))
+  (remove-hook 'compilation-finish-functions
+              #'run-kawa-after-compilation-finishes))
 
-(add-hook 'compilation-finish-functions #'run-kawa-after-compilation-finishes)
-(geiser-kawa-mvn-package-java-deps)
+(add-hook 'compilation-finish-functions
+          #'run-kawa-after-compilation-finishes)
+(geiser-kawa-deps-mvn-package)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]