Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [e4-dev] Dynamic Eclipse 4 with Clojure language

Clojure & Eclipse 4 Update status:

= TL;DR
- "org.eclipse.e4.languages" extension point is *the way* to glue
Clojure and the E4 Model together.
- Having DI / Behavioral Annotations work from Clojure-only without
any java class involved will require some more work from my part
(generating bytecode via ASM).

= Detail

== Annotations
E4 Annotations and Clojure Types don't work well together. Anyway,
Clojure Types weren't really made for this usecase, so:
- as a first step I just created stub java classes with annotations.
- in a second step I intend to generate annotated classes dynamically
via the ASM (bytecode generation / manipulation) library.

== Contributions via contributionURI
Tom made me look closely at how ReflectionContributionFactory works.
And it includes a working hook to provide my own
IContributionFactorySpi, via the "org.eclipse.languages" extension
point, like this:

   <extension point="org.eclipse.e4.languages">
      <language
            contributionFactory="ccw.util.ClojureContributionFactorySpi"
            name="clojure">
      </language>
   </extension>

This is perfect, it allows me to write contributionURIs like
contributionURI="bundleclass://ccw.core/clojure/some.namespace/some-var"

This will allow me to totally leverage the Eclipse 4 Model from
Clojure, without compromises!

Please, please, don't tell me you intend to deprecate / remove
org.eclipse.e4.languages, it's a fantastic hook for alternate
languages on the JVM !

Cheers,

-- 
Laurent


2013/11/21 Tom Schindl <tom.schindl@xxxxxxxxxxxxxxx>:
> On 21.11.13 16:00, Laurent PETIT wrote:
>> Hello,
>>
>> I'm Laurent Petit, main developer of Counterclockwise, the open source
>> Clojure Plugin for Eclipse.
>>
>> Lars Vogel suggested me to post my questions here, since they are
>> related to uncommon use of the Eclipse 4 framework.
>>
>> I want to embrace Eclipse 4 Model and dynamic (runtime) development in
>> the Counterclockwise plugin.
>>
>> So I'm currently experimenting with an interactive Clojure Console to
>> modify the Model on the fly.
>> I've been successful in getting parts from the IEclipseContext, and from
>> them creating parts via MBasicFactory, etc.
>>
>> My current problem is the apparent requirement for implementing Handlers
>> to :
>> - have the classes pre-compiled (as opposed to being dynamically created
>> via in-memory bytecode generation as Clojure does). I'm thinking this
>> because of the required "class URI".
>> - use @Execute annotation instead of implementing an interface.
>>
>
> It looks like we forgot to add something like IContributionFactory for
> method calling!
>
> Still I'm not sure this is a problem to you because if I got it right
> you create a jvm-object instance (although dynamically) through
> IContributionFactory (you can push your own into the root context!). So
> can't you simply create an annotated method through Clojure?
>
> Looking at the default implementation (ReflectionContributionFactory)
> there was at one time an extension point to contribute new protcols
> (e.g. bundleclojure://mybundle/MyClojure.clojure) support but I doubt it
> is still available/working.
>
> Tom
> _______________________________________________
> e4-dev mailing list
> e4-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/e4-dev


Back to the top