Hi everyone,
Cursive 1.6.2 is out now. As usual, this is a combination of the changes in the 1.6.2 EAP builds, there’s nothing new here for users on the EAP program. However I wanted to get a stable build out for those on the stable channel due to the imminent release of IntelliJ 2017.3.
The first new feature in this release is a change to how the stubs generation feature worked. This turned into a much larger change than I expected, and contains several fixes:
Another feature that a lot of people have asked for recently is the ability to navigate to things which are “defined” using keywords, such as specs and re-frame elements. This is now supported, and navigation, find usages etc works as expected for specs and re-frame. Note that this only works for things defined using namespaced keywords (which is standard for spec, but not so much for re-frame) to avoid changing the semantics of bare keywords unexpectedly.
The structure view is now much more useful. It now shows these same things defined with keywords (specs, re-frame elements) as well as having much better support for classes (e.g. deftype/defrecord/definterface), multimethods, protocols and more, as well as delineating private vars with the standard IntelliJ lock icon.
Finally, one thing that has traditionally been a real chore for new users is setting up keybindings. It’s particularly difficult in Cursive because IntelliJ has so many bindings already which experienced IntelliJ users expect to continue to work as they expect, but Cursive also needs a lot for structural editing actions. In recent IntelliJ versions it’s been possible to override actions in different contexts, so now I can ensure that in Clojure contexts the Cursive actions take precedence, and when not in Clojure contexts they have no effect. So I’ve now decided to bite the bullet and just map the actions by default. The actions are mapped in the three main keymaps users are likely to use - the default one used on Windows and Linux, the Mac OSX 10.5+ one and the Emacs one has CIDER-like bindings mapped to it. This has meant that I can finally get rid of the monstrously confusing Keybindings panel - possibly no other code has ever given me greater pleasure when deleting it.
I’m very interested in feedback on how well the default keymaps work, in particular on Windows because I don’t use it and the default keymap previously had some pretty terrible errors. I’m also interested in what the experience is like using the Emacs keymap for those used to Emacs/CIDER. If you’re interested in trying this out I recently resuscitated a port of the Emacs+ plugin which had languished and didn’t work on recent IntelliJ versions - if you want to set IntelliJ up to be as much like Emacs as possible that’s definitely recommended. Any and all feedback welcome.
And the final keymap-related new feature is that you can now go to Help->Show Cursive Cheat Sheet, which as the name implies will open a cheat sheet showing most of the useful Cursive actions and a lot of IntelliJ ones as well. It’s an HTML file which will be opened in your default browser, and it contains some CSS which should hopefully make it print well in landscape format. Any problems with this, please let me know.
This release also brings support for IntelliJ 2017.3 and for Leiningen 2.8.0 and 2.8.1, and adds some support for the clojure.java-time library. There is also now an inspection warning you if the file containing a namespace isn’t correctly located in the on-disk package hierarchy, and a corresponding fix for a very confusing bug in the test integration. There are also some other minor improvements - namespaced maps are correctly formatted in the test result diffs, and Java 8 default methods are handled better in reify-like forms. It also now allows symbol resolution to be customised to any macro or keyword definition form.
There are a few other miscellaneous new fixes and features too - better support for Clairvoyant tracing in CLJS, better support for spec.gen.alpha, support for the new ## reader macro, a more useful message when the test integration is broken by humane-test-output, and a few other minor fixes.
Here are the issues:
Cheers,
Colin
--
You received this message because you are subscribed to the Google Groups "Cursive" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cursive+unsubscribe@googlegroups.com.
To post to this group, send email to cur...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/cursive/d11d7ef5-9375-4dc5-8249-7debf57509a5%40googlegroups.com.
Hi Reynald,
That is indeed quite disturbing, and wasn’t my intent. I guess you’re using the “Mac OS X” keymap, not the “Mac OS X 10.5+” one, right?
Cheers,
Colin
To view this discussion on the web visit https://groups.google.com/d/msgid/cursive/CALz%3Dz8zWkS6f4xDFyEpZ5hnqpgg5D_xJKojtm6hG%3De9NfEdjRg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Cursive" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cursive+unsubscribe@googlegroups.com.
To post to this group, send email to cur...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/cursive/etPan.5a1dcc2a.b0fba44.6b1%40cursive-ide.com.
Hi Maarten,
No, there’s no special treatment like that. Could you file an issue for that and I’ll look at it? Namespaced keywords used to define things are now treated differently from normal keywords, so it’s possible there’s a bug slipped in there.
Cheers,
Colin