branch: elpa/geiser-kawa commit ad862b11e18d67ac62905a3847b0e94306ee6003 Author: spellcard199 <spellcard...@protonmail.com> Commit: spellcard199 <spellcard...@protonmail.com>
Update README.org, TODO.org --- README.org | 2 ++ TODO.org | 33 +++++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/README.org b/README.org index ad13a7e..932f5a2 100644 --- a/README.org +++ b/README.org @@ -69,6 +69,8 @@ Double quotes around parameters: the reason why the arguments are enclosed in do Parameter names: parameter names are retrieved using the =gnu.bytecode= package (included in Kawa) for reading local variables in Java methods' bytecode. Since parameters are not always present in bytecode as local variables, especially for java, when not available the parameter name defaults to =argN=, where =N= is a number. +[[https://gitlab.com/kashell/Kawa/-/blob/master/gnu/kawa/lispexpr/LangObjType.java][LangObjType objects]]: these are special objects that may behave like procedures. When these are called as procedures, a constructor java method is called. This method does not have the same name as the symbol you insert in Kawa, so I decided that it was a good idea to show the method name as part of the displayed module, preceded by a colon. I don't know if it's a good idea, but it would be easy to chang [...] + ** About completion for java's fields, methods and packages :PROPERTIES: :CUSTOM_ID: 7ca3650a-2658-42f0-8274-96f194768e11 diff --git a/TODO.org b/TODO.org index 8cd53b0..9446d2c 100644 --- a/TODO.org +++ b/TODO.org @@ -3,8 +3,7 @@ Since =geiser-kawa= limits itself to ask =kawa-devutil= for data and then wrap it in geiser's protocol, most of the bugs are actually in =kawa-devutil=. - Completion for Java is often broken -- Autodoc when using colon notation on Java methods doesn't show all the alternatives -- Evaluation should not capture Java's output by default, only Kawa's: I wrote it this way because at the time I was convinced it was a feature, but then I realized it's bad design +- Autodoc when using colon notation on Java methods doesn't show all the alternatives (I can't find again examples of where it happened though) - Fix kawa-devutil issues ** Add elisp tests, find bugs, fix them @@ -23,8 +22,6 @@ Write tests for these: ** Write melpa recipe and put on melpa -There are still obvious bugs that need to be fixed before the quality of the package becomes sufficient for melpa. - I tried to make a melpa recipe and it seems to work. Here are the instructions to reproduce it. #+BEGIN_SRC shell @@ -62,3 +59,31 @@ Test that it works: 2. =geiser-kawa-java-find-pc--cache= 3. =geiser-kawa-java-find-pc-refresh-cache= 3. =geiser-kawa-java-find-pc (&optional classloader-list)= + +** Add mechanism to inject kawa-geiser into running remote REPL + +It may be useful in cases where the user wants to have =Kawa= but not =kawa-geiser= as an actual dependency for her/his project, while still being able to use geiser-kawa. For example, for live inspection of a running java application. + +Is it possible to do it in a fileless way on the targe machine? Kawa does load classes without files. Learn how Kawa does it and if it's possible to: +1. Create a new ClassLoader in the Kawa remote repl +2. For each .class file in the =kawa-geiser= fat jar: + 1. Encode .class file to base64 string + 2. Send base64 string via the geiser connection + 3. Decode base64 + 4. Add to ClassLoader +3. Import and use =geiser= in the scheme environment directly from our ClassLoader + +** Consider if it's a good idea to write functions to download and uncompress kawa manual from ftp://ftp.gnu.org/pub/gnu/kawa/kawa-latest.zip + +Message could be something like: do you want to download and extract a copy of the manual from unsecure connection ... (file integrity will be checked with sha265 however)? + +Current sha256sum for ftp://ftp.gnu.org/pub/gnu/kawa/kawa-3.1.1.zip: dab1f41da968191fc68be856f133e3d02ce65d2dbd577a27e0490f18ca00fa22 + +#+BEGIN_SRC emacs-lisp +(defun sha256-of-file(file-path) + (secure-hash + 'sha256 + (with-temp-buffer + (insert-file-contents file-path) + (buffer-substring-no-properties (point-min) (point-max))))) +#+END_SRC