Proposed New Structure (starter for 10)
[email protected] (Phillip Lord) Fri, 14 Aug 2015 17:51:52 +0100
| Newsgroups | gmane.emacs.jdee.devel |
|---|---|
| Message-ID | <[email protected]> |
So, I wanted to put some meat onto the bone of my proposed new structure for JDEE. It doesn't work yet, of course, but I think that it can in a relatively short space of time. https://github.com/phillord/jde-with-clojure-backend The four components are: jde -- this will be the Java centric major mode. It will involve NO JVM interaction and not depend on any of the other parts. The "minimal viable product" here is a ELPA packaged major mode that is a child of Java mode and adds no functionality. jde-interactive (crappy name, sorry) -- a minor mode which will be active once the JVM (bsh interpreter equivalent) has been started and is running. In the short term, this will have a dependency on cider, but eventually this may just become a dependency on nrepl-client.el. I say may, because, I think quite a bit of the cider functionality (like the inspector) is JVM centric and entirely relevant. The MVP here is to use maven inside a project to launch an nrepl, and then to invoke a call to get the version number of the jde-nrepl middleware and check that it is consistent with the version of jde-interactive. jde-nrepl -- this is the nrepl middleware that provides all the backend functionality, like class look up and the like. The MVP here is to install some middleware into a nrepl, which returns a version map for checking my jde-interactive, and which is packaged as a maven dependency on clojars. jdee-sample -- this is a sample project. Requirements in the short term are that the project depend on jde-nrepl and https://github.com/talios/clojure-maven-plugin to provide the nrepl functionality we need. Typing "maven jde:nrepl" or equivalent should result in a nrepl session. MVP having a packaged jde-interactive that can install, that starts when we open "App.java" in jdee-sample, and which can then invoke a method of the class object coming from App.java. In the long term, I would expect that all four of these would be separate repos. That's the idea. The lisp packaging already works (as you can see form the dist directories that I should not have checked in). Most of the rest can be stolen from cider. Thoughts? Phil ------------------------------------------------------------------------------