Skip to content

Releases: Olical/conjure

Improve compiling for last breaking change

20 May 11:45
9b732d3
Compare
Choose a tag to compare

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

19 May 14:08
ae70a2b
Compare
Choose a tag to compare

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

15 May 12:44
fb0f1e5
Compare
Choose a tag to compare

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

13 May 21:28
9a3f021
Compare
Choose a tag to compare
  • 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 nils: 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

04 May 14:53
2f43ac5
Compare
Choose a tag to compare

#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!

Screenshot_2019-05-04_15-52-32

I also think I broke ClojureScript evals in the last patch version (SORRY) which is fixed now.

Lower Clojure version and internal changes

01 May 08:23
7ef7cd2
Compare
Choose a tag to compare

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

28 Apr 16:03
0a81a41
Compare
Choose a tag to compare

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

16 Apr 20:56
0c890ce
Compare
Choose a tag to compare

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.

Simple test bindings

10 Apr 12:09
6c3416a
Compare
Choose a tag to compare

This is the beginning of test support, adds ,rt (run tests) and ,rT (run all tests) as part of #20. Also removed the paren guard because it broke ClojureScript in weird ways (85a34f7).

The next work on testing will be running tests in your current namespace as well as a -test variant of the same name if I can find one. I'm also thinking of loading those namespaces for you but I'm not sure, that assumption that I'm allowed to load your namespace might be dangerous.

Maybe I should keep eval and test separate for you to decide? Feedback is appreciated on #20!

Smoothed some sharp edges and fixed OSX support

09 Apr 20:48
8a9cb52
Compare
Choose a tag to compare
  • load-file now uses the absolute path so if nvim is in another CWD to your REPL it'll still find the file you asked for: c836140
  • Ensure lack of compliment in your project doesn't throw any errors, completion should now be truly optional: ecfb1c0
  • Internal errors (see: when shit hits the fan) are displayed properly in :messages now: 063c29b - hopefully you never see these, they're a last resort "oh no" place to put errors. If you see them, report them!
  • Fix OSX support, it couldn't find the log buffer because of the /tmp symlink: 3918cbc
  • Add extra closing parens to stop you unbalancing your prepl connection's parens: 28b271d

So that's a few more closed issues and some more thought about async autocompletion. I think that'll land in v0.10.0 in the form of msgpack RPC over a port. So you can talk to the Conjure JVM process from other plugins directly without having to go through the nvim process which can block the UI thread.

Autocomplete plugins will just ask Conjure for it's RPC port then start communicating directly with it through there.

Have a great rest of your week!