branch: elpa/geiser-kawa commit 11c84155973bbdc4d65b461f475494da0da313e4 Author: spellcard199 <spellcard...@protonmail.com> Commit: spellcard199 <spellcard...@protonmail.com>
Fix (workaround) autodoc for certain symbol names --- src/main/java/kawageiser/GeiserAutodoc.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/kawageiser/GeiserAutodoc.java b/src/main/java/kawageiser/GeiserAutodoc.java index 747bbd2..5a49a46 100644 --- a/src/main/java/kawageiser/GeiserAutodoc.java +++ b/src/main/java/kawageiser/GeiserAutodoc.java @@ -9,7 +9,10 @@ import gnu.expr.CompiledProc; import gnu.expr.Language; import gnu.kawa.functions.Format; import gnu.lists.LList; -import gnu.mapping.*; +import gnu.mapping.Environment; +import gnu.mapping.Procedure; +import gnu.mapping.Procedure1or2; +import gnu.mapping.Symbol; import kawadevutil.data.ParamData; import kawadevutil.data.ProcDataGeneric; import kawadevutil.data.ProcDataNonGeneric; @@ -207,7 +210,12 @@ public class GeiserAutodoc extends Procedure1or2 { Object operator = null; boolean symExists = false; try { - operator = lang.eval(symId.toString()); + // env.get(symId) works with the < procedure, while lang.eval(symId.toString()) + // raises NullPointerException (maybe a bug?). + // On the other hand, env.get(symId) does not work with procedures defined + // from java with lang.defineFunction(), like the various geiser:... + // Since kawadevutil's eval works for both we are using that for now. + operator = GeiserEval.evaluator.eval(lang, env, symId).getResult(); symExists = true; // If it didn't exist env.get(symId) would have raised UnboundLocationException if (!Procedure.class.isAssignableFrom(operator.getClass())) { // Not a procedure