Releases: Olical/conjure
Log config and tidier mappings
- The brilliant @jlesquembre has added configuration to the log window in #35! So now you can control the size (with percentage values) and direction of the split. Exciting!
- I rethought the mappings and added support for
.edn
files in #37. There's now a lot more space for adding more mappings without stepping on the toes of other parts of the tool.
I think I'm going to move to a next
branch where all development happens soon. That way master should stay pointing at the latest version. I don't want to update the README with new things if they're not technically released yet.
I hope you enjoy!
Handle errors in lazy-seqs at the root
So if you evaluated something that returned a lazy-seq that would throw when it was fully resolved it would cause an error that never displayed. This is because the error happens inside the actual internal prepl code, not inside my eval code where I try/catch. I've solved this with a doall before the pr-str which should prevent any of these in the future.
I added some more code to check for these unhandled errors in the future and log them with some information about it probably being a bug in Conjure, so you should report them if you see more!
This was raised in #33 and hopefully fixed in this patch.
Improve compiling for last breaking change
The new compile script needed some TLC around output and using -Sforce
to fix some oddities in the first time compile.
Breaking: -Makefile +bin/compile +mranderson
I noticed some weird issues on first build of this version, I'll release a patch today that hopefully addresses them. Just
rm -rf classes target && bin/compile
if the initial compile failed for now.
This is a breaking change!
What you have to do
Replace your call to make compile
with bin/compile
. For me that's in my call to vim-plug as documented in the readme. Here's the change I made in my dotfiles, ignore the fact that I'm using the master branch, you should be using a tag. I use master because I know what's there and am okay with it breaking sometimes.
Why
I wanted to remove the dependency on make so I rolled my own "should I recompile?" check using modified times of the classes
directory and the latest git commit.
Mr Anderson
I originally had a kind of hacky solution to injecting compliment that involved managing a list of files to load by hand. I've now replaced that with calls to Mr Anderson to fetch and munge injected dependencies as well as tool.namespace to parse and resolve the dependency order.
This means I can grow the list of dependencies to inject into your prepl as you connect as much as I want. It'll never conflict with your existing copes of those dependencies. If you need a specific version of tools.namespace in your project but Conjure needs a newer one to do it's thing you don't have to worry: It'll just work!
Completion performance
I realised that the fix I put in for #34 was doing a bunch of unnecessary Neovim API calls. There were a few duplicate requests for information from Neovim in a few places actually.
I've basically made Conjure only ask for data it needs and not ask for things twice, this could definitely be improved by some sort of internal declarative system.
Shouldn't notice any functionality changes in this patch but it should work a lot faster as you type and eval the root form!
Self prepl and Compliment injection
- If you try to eval without any connections Conjure will prepl into it's own JVM. This means you can open up a
.clj
file anywhere on disk, hit<localleader>re
and have it evaluate the form under the cursor. - Compliment is no longer a required dependency in your project! You can connect to any prepl and Compliment will be injected for you. It won't conflict with existing Compliment versions in your JVM.
- Fix a bug with evaluating
nil
s: f745735 - Lower memory requirements from 512m to 256m, can probably go much lower but I need to have some metrics first.
- Fix #34, evaluating the current form or root form would behave weirdly if it contained a string or comment with unbalanced parenthesis inside.
Pretty errors and some more tests
#12 is done! So errors now get pretty printed as a string, just like they do in the regular Clojure REPL. The full stack trace data structure is still printed in the log (through zprint) but it's folded. You can reveal it with zo
and close it with zc
, check out :help fold
for more information on this feature. It's built into Vim!
I also think I broke ClojureScript evals in the last patch version (SORRY) which is fixed now.
Lower Clojure version and internal changes
Just a small patch because I realised 1.10.1-beta2
can cause issues on some machines and setups. I hope it didn't break it for anyone! Also includes some internal changes in preparation for better errors, the errors are now pretty printed as strings above the stack trace too.
Also fixed a bug where really long namespace forms weren't being read correctly to set the namespace of the eval.
Better exit, more tests, consistent eval
This is a fairly large set of commits but I still wanted to add more. I thought I'd cut at this known good point though.
- A PR to fix exiting the process nicely from @jlesquembre #26
- Full codecov and CircleCI support with a small test suite. I'll grow it over time but I've already got some nice RPC mocking tools and tests for reading forms.
- All kinds of evals will keep the line, column and origin file meta data on defs. So you can use
gd
to go to definition of things you evaluated with a range, form or buffer. - Added context support for compliment! So now you'll see local let bindings in your completions too, took quite a lot to get that working. The last thing on completion is making it work without you having to depend on Compliment yourself.
ClojureScript support for autocompletion and preserving def meta data will hopefully come some time soon! I hope you enjoy this release, let me know if you hit any issues!
Improve testing, re-add zprint, CircleCI setup and autocomplete out of the box
A rather large block of changes this time although there's still more I want to do around completion (#16) and a test suite (#13). I've just added one "Hello, World!" test for now to get everything working in CircleCI (which is amazing btw).
- The
,rt
and,rT
test bindings will run the-test
variant of your namespace name if available. - Test commands now take namespaces and regular expression filters just like the actual Clojure functions themselves.
- Test output is captured and printed properly. (
clojure.test/*test-out*
is a thing but only in Clojure, not ClojureScript) - Added a JSON RPC server for plugins to use to talk to Conjure directly without going through the Neovim process.
conjure#get_rpc_port()
will get you the port to connect to, funnily enough. - Added a Deoplete source to the repo, so if you use Deoplete and have Compliment in your JVM you now get autocompletion as you type out of the box. I've recommended some settings in the readme that might make your experience slightly better though.
- coc-conjure has updated to support this JSON RPC port too so it should get faster and smoother magically!
- Started a test suite using kaocha and CircleCI.
- Formatting output with zprint again since it looks really nice.
Whew, and there's lots more to come! But yay, full autocomplete as you type without blocking your editor! Omnicomplete still works as normal for those of you that prefer the good old <C-x><C-o>
binding.