Sorry about the late response, Gary. Would you mind taking the discussion over 
to cider’s issue tracker? (I tend to miss emails, but I don’t miss issues :-) 
).  

The second change seems totally reasonable. I guess ritz’s complete middleware 
returns the completion candidates in some odd format. Regarding the 
tooling-session - why can’t the completions be generated using the tooling 
session with ClojureScript (my knowledge of it is pretty basic). I guess this 
was something to do with piggieback, right?   

--  
Cheers,
Bozhidar


On Saturday, January 18, 2014 at 8:56 PM, Gary Trakhman wrote:

> Bozhidar, I had to slightly modify cider-interaction.el to make autocomplete 
> work for cljs.
>  
> --- cider-interaction.el        2014-01-18 13:51:28.082131609 -0500
> +++ /home/gary/.emacs.d/elpa/cider-0.4.0/cider-interaction.el   2014-01-17 
> 19:06:45.872591834 -0500
> @@ -469,12 +469,12 @@
>    (let ((strlst (plist-get
>                   (nrepl-send-request-sync
>                    (list "op" "complete"
> -                        "session" (nrepl-current-tooling-session)
> +                        "session" (nrepl-current-session)
>                          "ns" nrepl-buffer-ns
>                          "symbol" str))
>                   :value)))
>      (when strlst
> -      (car strlst))))
> +      strlst)))
>  
>  
>  
> Here's the current implementing code:
> https://github.com/gtrak/nrepl-complete/blob/master/src/nrepl_complete/middleware.clj
>  
> Here's a screenshot: http://i.imgur.com/GmBJ6Fj.png
>  
> It can't be implemented for cljs on the tooling session without sending the 
> real session id over somehow, it seems this would be wasteful and not a good 
> precedent for other middlewares.  
>  
> I'd appreciate your thoughts.
>  
> I'm also curious what it would take to make the display pretty like ac-nrepl, 
> which I had to disable.
>  
> As soon as this stuff is finalized, I'll package everything up nice and make 
> a first release.  
>  
>  
>  
> On Mon, Jan 13, 2014 at 10:21 AM, Gary Trakhman <gary.trakh...@gmail.com 
> (mailto:gary.trakh...@gmail.com)> wrote:
> > Austin's lein-plugin already manipulates project middlewares, so that's an 
> > easy target.  Onward!  
> >  
> >  
> > On Mon, Jan 13, 2014 at 10:10 AM, Bozhidar Batsov <bozhi...@batsov.com 
> > (mailto:bozhi...@batsov.com)> wrote:
> > > Cider’s completion understands a `complete` op, so the middleware is the 
> > > best approach if you ask me. The only reason that there’s also an eval 
> > > based completion mechanism (the one used by default) is that 
> > > clojure-complete is present as a REPLy (which is used by lein) dependency 
> > > and many newcomers have absolutely no idea what an nREPL middleware is. 
> > > Unfortunately it’s hard to balance initial easy of setup and good design 
> > > decisions.  
> > >  
> > > --  
> > > Cheers,
> > > Bozhidar
> > >  
> > >  
> > > On Monday, January 13, 2014 at 4:55 PM, Gary Trakhman wrote:
> > >  
> > >  
> > >  
> > > > On talking to Chas,  
> > > > https://github.com/cemerick/piggieback/issues/22
> > > >  
> > > > it seems like the right approach is to reify ac-nrepl's use of eval 
> > > > into a real "complete" op, and reimplement it to use that, then a 
> > > > common middleware can either use clojure's environment 
> > > > (clojure-complete) or piggieback's compiler state to implement the 
> > > > appropriate auto-complete based on the active repl.  
> > > >  
> > > > The issue here is that clojure's auto-complete takes the JVM state as 
> > > > an implicit parameter, whereas cljs-complete requires an 'env' arg that 
> > > > has to come from somewhere (piggieback has a var that keeps track of 
> > > > repl session state).  Ac-nrepl shouldn't be able to eval code, that 
> > > > means it's being coupled to the JVM state, which won't do for cljs or 
> > > > other sorts of repls-on-repls.  
> > > >   
> > > >  
> > > >  
> > > >  
> > > > On Mon, Jan 13, 2014 at 9:03 AM, Gary Trakhman <gary.trakh...@gmail.com 
> > > > (mailto:gary.trakh...@gmail.com)> wrote:
> > > > > I've released a cljs port of clojure-complete:
> > > > >  
> > > > > Here's the mailing list announcement, also inlined.  
> > > > >  
> > > > > https://groups.google.com/forum/#!topic/clojurescript/Dt1s4laHFXc
> > > > > cljs-complete, A Clojure library designed to auto-complete 
> > > > > clojurescript based on cljs compiler state.
> > > > >  
> > > > > - With leiningen:
> > > > >      [cljs-complete "0.1.0"]
> > > > >  
> > > > > - Usage
> > > > >  
> > > > > ;; env is pulled from cljs compiler state
> > > > > => (completions @cljs.env/*compiler* "al" 'cljs.core)
> > > > > ("alength" "alter-meta!")
> > > > >  
> > > > > This is meant to hook into piggieback, that'll be the next thing I 
> > > > > try. I hope I can get some help with the hairy emacs bits :-).
> > > > >  
> > > > >  
> > > > > On Tuesday, January 7, 2014 1:54:27 AM UTC-5, Bozhidar Batsov wrote:
> > > > > > I'm cider's maintainer. The problem with code completion for 
> > > > > > ClojureScript is that the default mechanism is based on the 
> > > > > > Clojure-only library https://github.com/ninjudd/clojure-complete. 
> > > > > > As I don't use ClojureScript I haven't paid much attention to it so 
> > > > > > far. If there is a similar library for ClojureScript I might add 
> > > > > > support for it. Btw, cider will also pick up any nREPL middleware 
> > > > > > that provides a "complete" op - if there is a ClojureScript nREPL 
> > > > > > completion middleware it can be used with cider even now. Ideally 
> > > > > > at some point we'll have unified middleware supporting both Clojure 
> > > > > > & ClojureScript.
> > > > > >  
> > > > > > On Sunday, January 5, 2014 10:30:44 PM UTC+2, Alexandru Nedelcu 
> > > > > > wrote:
> > > > > > >  
> > > > > > > Hi,
> > > > > > >  
> > > > > > >  
> > > > > > > I can’t get auto-completion or jumping to the definition of a 
> > > > > > > function in Emacs, while working with ClojureScript. Is this a 
> > > > > > > limitation of Emacs’ Cider 
> > > > > > > (https://github.com/clojure-emacs/cider) plugin?
> > > > > > >  
> > > > > > >  
> > > > > > > I managed to get nRepl working by using the awesome 
> > > > > > > com.cemerick/austin (https://github.com/cemerick/austin) plugin 
> > > > > > > for lein (besides including the plugin in project.clj I’ve got no 
> > > > > > > other special configuration). So to work with ClojureScript, from 
> > > > > > > inside an nRepl session, I execute the following (not sure if 
> > > > > > > this is right):
> > > > > > >  
> > > > > > > (cemerick.austin.repls/exec :exec-cmds ["google-chrome"])
> > > > > > >  
> > > > > > > In Emacs I do the same thing, by first starting the repl with 
> > > > > > > cider-jack-in and then I execute the above command. Compiling the 
> > > > > > > current buffer works (C-c C-k), I can also send expressions for 
> > > > > > > evaluation to the repl (C-x C-e).
> > > > > > >  
> > > > > > >  
> > > > > > > However, as I said, auto-completion doesn’t work and neither does 
> > > > > > > jumping to the definition of a function. Is there any way to get 
> > > > > > > these features while working with ClojureScript in Emacs? Or 
> > > > > > > maybe in another IDE?
> > > > > > >  
> > > > > > >  
> > > > > > > Thanks,
> > > > > > >  
> > > > > > >  
> > > > > > > --  
> > > > > > > Alexandru Nedelcu
> > > > > > > www.bionicspirit.com (http://www.bionicspirit.com)
> > > > > > >  
> > > > > > > PGP Public Key:
> > > > > > > https://bionicspirit.com/key.aexpk  
> > > > >  
> > > > > --  
> > > > > --  
> > > > > You received this message because you are subscribed to the Google
> > > > > Groups "Clojure" group.
> > > > > To post to this group, send email to clojure@googlegroups.com 
> > > > > (mailto:clojure@googlegroups.com)
> > > > > Note that posts from new members are moderated - please be patient 
> > > > > with your first post.
> > > > > To unsubscribe from this group, send email to
> > > > > clojure+unsubscr...@googlegroups.com 
> > > > > (mailto:clojure%2bunsubscr...@googlegroups.com)
> > > > > For more options, visit this group at
> > > > > http://groups.google.com/group/clojure?hl=en
> > > > > ---  
> > > > > You received this message because you are subscribed to the Google 
> > > > > Groups "Clojure" group.
> > > > > To unsubscribe from this group and stop receiving emails from it, 
> > > > > send an email to clojure+unsubscr...@googlegroups.com 
> > > > > (mailto:clojure%2bunsubscr...@googlegroups.com).
> > > > > For more options, visit https://groups.google.com/groups/opt_out.
> > > >  
> > > > --  
> > > > --  
> > > > You received this message because you are subscribed to the Google
> > > > Groups "Clojure" group.
> > > > To post to this group, send email to clojure@googlegroups.com 
> > > > (mailto:clojure@googlegroups.com)
> > > > Note that posts from new members are moderated - please be patient with 
> > > > your first post.
> > > > To unsubscribe from this group, send email to
> > > > clojure+unsubscr...@googlegroups.com 
> > > > (mailto:clojure+unsubscr...@googlegroups.com)
> > > > For more options, visit this group at
> > > > http://groups.google.com/group/clojure?hl=en
> > > > ---  
> > > > You received this message because you are subscribed to a topic in the 
> > > > Google Groups "Clojure" group.
> > > > To unsubscribe from this topic, visit 
> > > > https://groups.google.com/d/topic/clojure/uXtd--Xv6vU/unsubscribe.
> > > > To unsubscribe from this group and all its topics, send an email to 
> > > > clojure+unsubscr...@googlegroups.com 
> > > > (mailto:clojure+unsubscr...@googlegroups.com).
> > > >  
> > > > For more options, visit https://groups.google.com/groups/opt_out.
> > >  
> > > --  
> > > --  
> > > You received this message because you are subscribed to the Google
> > > Groups "Clojure" group.
> > > To post to this group, send email to clojure@googlegroups.com 
> > > (mailto:clojure@googlegroups.com)
> > > Note that posts from new members are moderated - please be patient with 
> > > your first post.
> > > To unsubscribe from this group, send email to
> > > clojure+unsubscr...@googlegroups.com 
> > > (mailto:clojure%2bunsubscr...@googlegroups.com)
> > > For more options, visit this group at
> > > http://groups.google.com/group/clojure?hl=en
> > > ---  
> > > You received this message because you are subscribed to the Google Groups 
> > > "Clojure" group.
> > > To unsubscribe from this group and stop receiving emails from it, send an 
> > > email to clojure+unsubscr...@googlegroups.com 
> > > (mailto:clojure%2bunsubscr...@googlegroups.com).
> > > For more options, visit https://groups.google.com/groups/opt_out.
> >  
>  
> --  
> --  
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com 
> (mailto:clojure@googlegroups.com)
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com 
> (mailto:clojure+unsubscr...@googlegroups.com)
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---  
> You received this message because you are subscribed to a topic in the Google 
> Groups "Clojure" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/clojure/uXtd--Xv6vU/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to 
> clojure+unsubscr...@googlegroups.com 
> (mailto:clojure+unsubscr...@googlegroups.com).
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to