Re: Proposed New Structure (starter for 10)

Lee Hinman <[email protected]> Sun, 16 Aug 2015 13:31:16 -0600
Newsgroups gmane.emacs.jdee.devel
Message-ID <[email protected]>
Phillip Lord writes:

> My starting point is that I would rather have a major-mode to open
> files and does nothing else, but is installable via package.el. This
> is the most critical change that we must achieve. Until this happens
> JDEE is effectively junk.

+1, having to manually install is a non-starter for a lot of people.
Having an actual package so people can follow along or MELPA would be
fantastic.

> After this my vision is subtly different. I believe that JDEE should
> be relatively small and do as little as possible, while allowing Emacs
> and the environment to do most or all of the things that you speak
> off.
> 
> So, project support. Eric has already mentioned EDE. Combine this with
> rapid navigation tools like projectile, and we should have what we
> need. The rest of the project support can be binned.

+1, I think jde-mode should be a minor mode rather than a major-mode,
all the non-interactive parts should be part of java-mode and
contributions/enhancements should be made there.

> I believe we need connectivity to the JVM. I suggest nrepl for this,
> as it allows us to connect, and gives structured access, an
> interactive repl (albeit Clojure based rather than bsh which looks
> like Java) and an independent channel for tooling. This already
> exists. My starter for 10 just adds maven support (will when it
> works!).

I think nrepl is a good choice for it, but I enjoy clojure so I might be
biased. Perhaps for Java 9 the included JDK REPL would be a good idea
though (since it will be supported by the OpenJDK team)?

> Automatic configuration of classpaths. Once we have JVM connectivity,
> I believe, JDEE does not need configuration of the classpath. Rather
> Maven or other build tools we support will do this. JDEE then should
> not need to know where the classes are.
>
> Auto-completion -- we should support completion-at-point-function,
> using a connection to the JVM, and a Java (or JVM) based completion
> library. Actual completion can be done by company, auto-complete or
> what ever.

Yeah, just making the information available and using Emacss' completion
is a good idea.

> Source browsing -- we use the JVM connection to a build tool to find
> the source, combined with EDE and projectile.

This is largely already possible offline with gtags (which I use for
Java development in Emacs currently). I'm not sure it's worth adding
unless this can be as good or better than the gtags integration.

> Object/Class introspection -- CIDER already does this.

+1, a great feature that requires a connection to a JVM

> Find usages of -- backend middleware. Hopefully we can plugin to helm
> and the like.
>
> Constant Compilation (and class reloading) -- no idea how to achieve
> this, but I think it is not an Emacs issue, I think it is a build tool
> and repl issue. We should work with CIDER and ENSIME to achieve this,
> as they would probably both like it.

Constant compilation (to me) isn't such an important feature, but I
*definitely* want to be able to compile the project/file manually with
something like =C-c C-k= (ala Cider) or =C-c C-v C-c= (jde current). An
important feature of the compilation (again, for me) would be
integrating with Flycheck so I could see the lines that have compilation
errors/warnings.

> My point is, JDEE has been a fore-runner in many of these things, but
> is now carrying a lot of baggage. A lot of it's features now shadow
> more general implementations. We need to throw out everything but the
> glue that we need.
>
> As I said before, though, I only have a limited time to work on this.
> I think my structure makes sense, and will take the least effort. But
> I do not even have a lot of time to convince people, let alone code
> it. I'll get my core idea up there as a starting point. But this is
> probably where I will leave it. If no one takes it up, it's not going
> anywhere.

I'm happy to work on an idea like this, but I don't have any history
working with JDEE before, so I don't know the best way to go about this.

My idea of a minimum-viable-project is one where I can do =M-x
jde-connect= and then hit =C-c C-v C-c= to compile the project (or get
the compilation errors). This includes JDEE detecting the project type
and configuring the appropriate classpath.

Just let me know how I can help ^_^

-- 
;; Lee

------------------------------------------------------------------------------