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

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

[nongnu] elpa/geiser-kawa 69fbe9c 067/119: Refactor: several changes + u


From: Philip Kaludercic
Subject: [nongnu] elpa/geiser-kawa 69fbe9c 067/119: Refactor: several changes + update pom.xml for kawa-devutil
Date: Sun, 1 Aug 2021 18:30:40 -0400 (EDT)

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

    Refactor: several changes + update pom.xml for kawa-devutil
---
 elisp/geiser-kawa-complete-java.el                 | 53 +++++++++++++++++-----
 elisp/geiser-kawa-eval-util.el                     | 28 ++++++++++++
 elisp/geiser-kawa-exprtree.el                      | 47 ++-----------------
 pom.xml                                            |  2 +-
 src/main/java/kawageiser/Geiser.java               |  4 +-
 .../ManualEpubUnzipToTmpDir.java                   |  2 +-
 src/main/java/kawageiser/exprtree/ExprTree.java    | 37 +++++++++++++++
 .../java/kawageiser/java/GeiserCompleteJava.java   | 51 ++++++---------------
 8 files changed, 129 insertions(+), 95 deletions(-)

diff --git a/elisp/geiser-kawa-complete-java.el 
b/elisp/geiser-kawa-complete-java.el
index 579871a..aeccf53 100644
--- a/elisp/geiser-kawa-complete-java.el
+++ b/elisp/geiser-kawa-complete-java.el
@@ -6,6 +6,12 @@
 ;; not, see <http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5>.
 
 (require 'subr-x)
+(require 'geiser-kawa-exprtree)
+
+;; fmp stands for:
+;; 1. Field
+;; 2. Method
+;; 3. Package
 
 (defun geiser-kawa--repl--point-after-prompt ()
   (save-excursion
@@ -21,7 +27,7 @@
            (geiser-syntax--pop-to-top)
            (point))))
 
-(defun geiser-kawa-complete-java--get-data (code-str cursor-index)
+(defun geiser-kawa-complete-fmp--get-data (code-str cursor-index)
   "`code' is a string containing the code. It must be syntatically
   scheme, including balanced parentheses.
 `cursor' is an integer representing where the cursor is in that code."
@@ -46,7 +52,7 @@
                                           "\t")))))
       (geiser-eval--retort-result geiser-answer))))
 
-(defun geiser-kawa-complete-java--user-choice--field-or-method
+(defun geiser-kawa-complete-fmp--user-choice--field-or-method
     (fm-compl-data)
   ;; fm stands for field or method.
   (let ((compl-for-class
@@ -74,7 +80,7 @@
      nil
      before-cursor)))
 
-(defun geiser-kawa-complete-java--user-choice--package
+(defun geiser-kawa-complete-fmp--user-choice--package
     (package-compl-data)
   (let ((field-or-method-or-package
          (cadr (assoc "field-or-method-or-package" package-compl-data)))
@@ -102,18 +108,18 @@
       "." (string-remove-prefix package-name before-cursor))
      )))
 
-(defun geiser-kawa-complete-java--user-choice-dispatch
+(defun geiser-kawa-complete-fmp--user-choice-dispatch
     (compl-data)
   (let ((compl-for (cadr (assoc "field-or-method-or-package"
                                 compl-data))))
     (cond ((equal compl-for "FIELD")
-           (geiser-kawa-complete-java--user-choice--field-or-method
+           (geiser-kawa-complete-fmp--user-choice--field-or-method
             compl-data))
           ((equal compl-for "METHOD")
-           (geiser-kawa-complete-java--user-choice--field-or-method
+           (geiser-kawa-complete-fmp--user-choice--field-or-method
             compl-data))
           ((equal compl-for "PACKAGE")
-           (geiser-kawa-complete-java--user-choice--package
+           (geiser-kawa-complete-fmp--user-choice--package
             compl-data))
          ((equal compl-for nil)
           (message "No completions found.")
@@ -121,7 +127,7 @@
           (t (error (format "[Unexpected condition] compl-for: %s"
                             (prin1-to-string compl-for)))))))
 
-(defun geiser-kawa-complete-java--code-point-from-toplevel ()
+(defun geiser-kawa-complete-fmp--code-point-from-toplevel ()
   (let* (reg-beg
          reg-end
          code-str
@@ -157,14 +163,14 @@
   "Complete java field or method or package (fmp) at point"
 
   (let* ((code-and-point-data
-          (geiser-kawa-complete-java--code-point-from-toplevel))
+          (geiser-kawa-complete-fmp--code-point-from-toplevel))
          (code-str     (cdr (assoc "code-str"
                                    code-and-point-data)))
          (cursor-index (cdr (assoc "cursor-index"
                                    code-and-point-data)))
-         (compl-data (geiser-kawa-complete-java--get-data
+         (compl-data (geiser-kawa-complete-fmp--get-data
                       code-str cursor-index))
-         (user-choice (geiser-kawa-complete-java--user-choice-dispatch
+         (user-choice (geiser-kawa-complete-fmp--user-choice-dispatch
                        compl-data)))
     (when (thing-at-point 'word)
       (if (looking-back ":" (- (point) 2))
@@ -175,6 +181,29 @@
     ;;   (kill-word 1)
     ))
 
+
+;;;; Functions to get the Expression tree that is made to try and get
+;;;; java completions. Useful when debugging why java completion fails.
+
+(defun geiser-kawa-complete-fmp--exprtree (code-str cursor-index)
+  (geiser-kawa-eval--to-res
+   `(geiser:complete-java-show-expr-tree
+     ,code-str
+     ,cursor-index)))
+
+(defun geiser-kawa-complete-fmp-at-point-exprtree ()
+  (interactive)
+  (let* ((code-and-point-data
+          (geiser-kawa-complete-fmp--code-point-from-toplevel))
+         (code-str     (cdr (assoc "code-str"
+                                   code-and-point-data)))
+         (cursor-index (cdr (assoc "cursor-index"
+                                   code-and-point-data)))
+         (expr-tree (geiser-kawa-complete-fmp--exprtree
+                     code-str cursor-index)))
+    (geiser-kawa-exprtree--view expr-tree)))
+
+
 (provide 'geiser-kawa-complete-java)
 
-;;; geiser-kawa-complete-java.el ends here
+;;; geiser-kawa-complete-fmp.el ends here
diff --git a/elisp/geiser-kawa-eval-util.el b/elisp/geiser-kawa-eval-util.el
new file mode 100644
index 0000000..6f235f4
--- /dev/null
+++ b/elisp/geiser-kawa-eval-util.el
@@ -0,0 +1,28 @@
+;; Copyright (C) 2020 spellcard199 <spellcard199@protonmail.com>
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the Modified BSD License. You should
+;; have received a copy of the license along with this program. If
+;; not, see <http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5>.
+
+(require 'geiser-eval)
+
+;; Simple wrappers for geiser functions.
+
+(defun geiser-kawa-eval--to-res (sexp)
+  (let* ((question
+          (format "(geiser:eval (interaction-environment) %S)"
+                  (format "%S" sexp)))
+         (answer (geiser-eval--send/wait question)))
+
+    (if (assoc 'error answer)
+        (signal 'peculiar-error
+                (list (string-trim
+                       (car (split-string (geiser-eval--retort-output
+                                           answer)
+                                          "\t")))))
+      ;; from: ((result "expr-tree") (output . ...))
+      ;; to: "expr-tree"
+      (cadr (car answer)))))
+
+(provide 'geiser-kawa-eval-util)
diff --git a/elisp/geiser-kawa-exprtree.el b/elisp/geiser-kawa-exprtree.el
index 61a2b07..24a735a 100644
--- a/elisp/geiser-kawa-exprtree.el
+++ b/elisp/geiser-kawa-exprtree.el
@@ -5,27 +5,11 @@
 ;; have received a copy of the license along with this program. If
 ;; not, see <http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5>.
 
-(require 'geiser-kawa-complete-java)
+(require 'geiser-kawa-eval-util)
 
 (defvar geiser-kawa-exprtree-buffer "*kawa exprtree*"
   "Buffer where Expression tree is showed")
 
-(defun geiser-kawa-eval--to-res (sexp)
-  (let* ((question
-          (format "(geiser:eval (interaction-environment) %S)"
-                  (format "%S" sexp)))
-         (answer (geiser-eval--send/wait question)))
-
-    (if (assoc 'error answer)
-        (signal 'peculiar-error
-                (list (string-trim
-                       (car (split-string (geiser-eval--retort-output
-                                           answer)
-                                          "\t")))))
-      ;; from: ((result "expr-tree") (output . ...))
-      ;; to: "expr-tree"
-      (cadr (car answer)))))
-
 (defun geiser-kawa-exprtree--view (expr-tree)
   (with-current-buffer (get-buffer-create
                         geiser-kawa-exprtree-buffer)
@@ -39,14 +23,9 @@
 
 (defun geiser-kawa-exprtree--for-expression (code-str)
   (geiser-kawa-eval--to-res
-   ;; Kawa sexp here
-   `(invoke
-     (kawadevutil.ast.AstElemWrapper
-      (kawadevutil.compile.Compile:compileStr
-       ,code-str))
-     'formatElem java.lang.Boolean:TRUE)))
+   `(geiser:expr-tree-formatted ,code-str)))
 
-(defun geiser-kawa-exprtree-for-expression ()
+(defun geiser-kawa-exprtree-sexp ()
   (interactive)
   "If region is active send region, otherwise send last expression."
   (let* ((code-str
@@ -60,26 +39,6 @@
                      code-str)))
     (geiser-kawa-exprtree--view expr-tree)))
 
-(defun geiser-kawa-exprtree--for-fmp-completion(code-str cursor-index)
-  (geiser-kawa-eval--to-res
-   ;; Kawa sexp here
-   `(kawageiser.java.GeiserCompleteJava:getExprTreeAndFormat
-     ,code-str
-     ,cursor-index)))
-
-(defun geiser-kawa-exprtree-for-fmp-completion ()
-  (interactive)
-  (let* ((code-and-point-data
-          (geiser-kawa-complete-java--code-point-from-toplevel))
-         (code-str     (cdr (assoc "code-str"
-                                   code-and-point-data)))
-         (cursor-index (cdr (assoc "cursor-index"
-                                   code-and-point-data)))
-         (expr-tree (geiser-kawa-exprtree--for-fmp-completion
-                     code-str cursor-index)))
-    (geiser-kawa-exprtree--view expr-tree)))
-
 (provide 'geiser-kawa-exprtree)
 
 ;;; geiser-kawa-exprtree.el ends here
-
diff --git a/pom.xml b/pom.xml
index 407c9b8..e524782 100644
--- a/pom.xml
+++ b/pom.xml
@@ -63,7 +63,7 @@
         <dependency>
             <groupId>com.gitlab.spellcard199</groupId>
             <artifactId>kawa-devutil</artifactId>
-            <version>457dd8be41dd4d0a97097c3a56a6931878233fb2</version>
+            <version>8e0eefcee1e7cd12d6929cbecd2584f8fc5bca2e</version>
         </dependency>
 
         <!-- https://mvnrepository.com/artifact/org.testng/testng -->
diff --git a/src/main/java/kawageiser/Geiser.java 
b/src/main/java/kawageiser/Geiser.java
index 2a20ca3..1909257 100644
--- a/src/main/java/kawageiser/Geiser.java
+++ b/src/main/java/kawageiser/Geiser.java
@@ -39,8 +39,10 @@ public class Geiser implements Runnable {
         procMap.put("geiser:completions", 
"kawageiser.GeiserCompleteSymbol:getCompletions");
         procMap.put("geiser:no-values", "kawageiser.GeiserNoValues:noValues");
         procMap.put("geiser:complete-java", 
"kawageiser.java.GeiserCompleteJava:completeJava");
-        procMap.put("geiser:manual-epub-unzip-to-tmp-dir", 
"kawageiser.geiserDoc.ManualEpubUnzipToTmpDir:unzipToTmpDir");
+        procMap.put("geiser:complete-java-show-expr-tree", 
"kawageiser.java.GeiserCompleteJava:getExprTreeFormatted");
+        procMap.put("geiser:manual-epub-unzip-to-tmp-dir", 
"kawageiser.docutil.ManualEpubUnzipToTmpDir:unzipToTmpDir");
         procMap.put("geiser:macroexpand", 
"kawageiser.GeiserMacroexpand:expand");
+        procMap.put("geiser:expr-tree-formatted", 
"kawageiser.exprtree.ExprTree:getExprTreeFormatted");
 
         try {
             if (lang.lookup("geiser:eval") == null) {
diff --git a/src/main/java/kawageiser/geiserDoc/ManualEpubUnzipToTmpDir.java 
b/src/main/java/kawageiser/docutil/ManualEpubUnzipToTmpDir.java
similarity index 96%
rename from src/main/java/kawageiser/geiserDoc/ManualEpubUnzipToTmpDir.java
rename to src/main/java/kawageiser/docutil/ManualEpubUnzipToTmpDir.java
index 170c2de..25876b6 100644
--- a/src/main/java/kawageiser/geiserDoc/ManualEpubUnzipToTmpDir.java
+++ b/src/main/java/kawageiser/docutil/ManualEpubUnzipToTmpDir.java
@@ -3,7 +3,7 @@
  * This is free software;  for terms and warranty disclaimer see ./COPYING.
  */
 
-package kawageiser.geiserDoc;
+package kawageiser.docutil;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/src/main/java/kawageiser/exprtree/ExprTree.java 
b/src/main/java/kawageiser/exprtree/ExprTree.java
new file mode 100644
index 0000000..dd3b42b
--- /dev/null
+++ b/src/main/java/kawageiser/exprtree/ExprTree.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2020 spellcard199 <spellcard199@protonmail.com>
+ * This is free software;  for terms and warranty disclaimer see ./COPYING.
+ */
+
+package kawageiser.exprtree;
+
+import gnu.expr.Language;
+import gnu.mapping.Environment;
+import kawadevutil.ast.AstElemWrapper;
+
+import java.io.IOException;
+
+public class ExprTree {
+
+    public static AstElemWrapper
+    getExprTree(String codeStr, Language lang, Environment env)
+            throws IOException {
+        return new kawadevutil.ast.AstElemWrapper(codeStr, lang, env);
+    }
+
+    public static AstElemWrapper
+    getExprTree(String codeStr) throws IOException {
+        return getExprTree(codeStr, Language.getDefaultLanguage(), 
Environment.user());
+    }
+
+    public static String
+    getExprTreeFormatted(String codeStr, Language lang, Environment env)
+            throws IOException {
+        return getExprTree(codeStr, lang, env).formatElem(true);
+    }
+
+    public static String
+    getExprTreeFormatted(String codeStr) throws IOException {
+        return getExprTree(codeStr).formatElem(true);
+    }
+}
diff --git a/src/main/java/kawageiser/java/GeiserCompleteJava.java 
b/src/main/java/kawageiser/java/GeiserCompleteJava.java
index 653e2fe..d2664ce 100644
--- a/src/main/java/kawageiser/java/GeiserCompleteJava.java
+++ b/src/main/java/kawageiser/java/GeiserCompleteJava.java
@@ -24,9 +24,7 @@ import java.util.stream.Collectors;
 public class GeiserCompleteJava {
 
     public static String
-    completeJava(
-            IString codeStr,
-            IntNum cursorIndex)
+    completeJava(IString codeStr, IntNum cursorIndex)
             throws Throwable {
         return completeJava(
                 codeStr,
@@ -36,11 +34,8 @@ public class GeiserCompleteJava {
     }
 
     public static String
-    completeJava(
-            IString codeStr,
-            IntNum cursorIndex,
-            Language lang,
-            Environment env)
+    completeJava(IString codeStr, IntNum cursorIndex, Language lang,
+                 Environment env)
             throws Throwable {
 
         // Get Data
@@ -74,8 +69,7 @@ public class GeiserCompleteJava {
     }
 
     private static LList
-    toLList(
-            CompletionDataForJavaFOM complData) {
+    toLList(CompletionDataForJavaFOM complData) {
         String completionsForClass = complData.getForClass().getName();
         // I don't know why it says "unchecked call" when using 
complData.getRequiredModifiers().stream()
         ArrayList<String> modifiers = new ArrayList<>();
@@ -93,8 +87,7 @@ public class GeiserCompleteJava {
     }
 
     private static LList
-    toLList(
-            CompletionDataForJavaPackage complData) {
+    toLList(CompletionDataForJavaPackage complData) {
         ArrayList<LList> res = new ArrayList<>(getCommonData(complData));
         res.addAll(Arrays.asList(
                 LList.list2("package-name", complData.getPinfo().getName())
@@ -103,8 +96,7 @@ public class GeiserCompleteJava {
     }
 
     private static List<LList>
-    getCommonData(
-            CompletionDataForJava complData) {
+    getCommonData(CompletionDataForJava complData) {
         CompletionDataForJava.FieldOrMethodOrPackage fieldOrMethod = 
complData.getFieldOrMethodOrPackage();
         List<String> names = (List<String>) 
complData.getNames().stream().distinct().collect(Collectors.toList());
         String beforeCursor = 
complData.getCursorMatcher().getCursorMatch().getBeforeCursor();
@@ -120,11 +112,8 @@ public class GeiserCompleteJava {
     }
 
     public static Optional<AstElemWrapper>
-    getExprTreeMaybe(
-            IString codeStr,
-            IntNum cursorIndex,
-            Language lang,
-            Environment env)
+    getExprTreeMaybe(IString codeStr, IntNum cursorIndex, Language lang,
+                     Environment env)
             throws IOException {
         Optional<CompletionDataForJava> complDataMaybe =
                 kawadevutil.complete.java.CompleteJavaFMP.complete(
@@ -138,33 +127,23 @@ public class GeiserCompleteJava {
     }
 
     public static Optional<AstElemWrapper>
-    getExprTreeMaybe(
-            IString codeStr,
-            IntNum cursorIndex)
+    getExprTreeMaybe(IString codeStr, IntNum cursorIndex)
             throws IOException {
         return getExprTreeMaybe(
-                codeStr,
-                cursorIndex,
-                Language.getDefaultLanguage(),
-                Environment.user());
-
+                codeStr, cursorIndex,
+                Language.getDefaultLanguage(), Environment.user());
     }
 
-    public static String getExprTreeAndFormat(
-            IString codeStr,
-            IntNum cursorIndex,
-            Language lang,
-            Environment env)
+    public static String getExprTreeFormatted(IString codeStr, IntNum 
cursorIndex,
+                                              Language lang, Environment env)
             throws IOException {
         return getExprTreeMaybe(codeStr, cursorIndex, lang, env)
                 .map(complData -> complData.formatElem(true)).get();
     }
 
-    public static String getExprTreeAndFormat(
-            IString codeStr,
-            IntNum cursorIndex)
+    public static String getExprTreeFormatted(IString codeStr, IntNum 
cursorIndex)
             throws IOException {
-        return getExprTreeAndFormat(
+        return getExprTreeFormatted(
                 codeStr,
                 cursorIndex,
                 Language.getDefaultLanguage(),



reply via email to

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