[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(),
- [nongnu] elpa/geiser-kawa 79dec54 061/119: Add support for viewing Expression tree, (continued)
- [nongnu] elpa/geiser-kawa 79dec54 061/119: Add support for viewing Expression tree, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa 8d6202f 081/119: Refactor + Fix style + Copyright notices, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa 1ffe084 097/119: Fixes for windows support + README.org: add instructions, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa ad862b1 090/119: Update README.org, TODO.org, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa d7cb7d9 105/119: Remove advice from "run-kawa" + add "geiser-kawa-run-kawa" function, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa ff93297 112/119: README.org - small changes, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa 71f8a69 114/119: Fix checkdoc and lint warnings in preparation for melpa recipe update, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa 1538f1f 062/119: TODO.org: update, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa 2016503 063/119: Fix error caused by undefined reg-beg and reg-end, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa e4fc302 065/119: pom.xml: update kawa-devutil dep, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa 69fbe9c 067/119: Refactor: several changes + update pom.xml for kawa-devutil,
Philip Kaludercic <=
- [nongnu] elpa/geiser-kawa f57efde 071/119: Change geiser version, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa f25955e 072/119: Fix broken package name, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa 0ef5baa 106/119: melpa/melpa#6858 - Fix issues found by "Suggestions/experimental static checks", Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa bed937f 101/119: TODO.org: update, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-kawa f76b53d 111/119: README.org - Add section about MELPA + better wording + small fix, Philip Kaludercic, 2021/08/01