Skip to content

Releases: Olical/conjure

More Clojure config, vim-repeat support, Aniseed updates

07 Feb 12:18
8313343
Compare
Choose a tag to compare

Hello parenthesis conjurers! I hope you're having a good weekend and this version finds you well!

  • Merged #169 which added g:conjure#client#clojure#nrepl#test#current_form_names, allowing you to customise what symbols identify a form as a "test" for running the test under the cursor. This allows you to support other testing tools and macros in Clojure land. Thanks, @mracos!
  • Updated Aniseed to v3.15.0, adding more fixes and improvements.
  • Added support for tpope/vim-repeat as requested in #171 by @dharrigan, thanks! So now you can use . (with repeat installed) to repeat any Conjure action. There are probably still some small parts of Conjure which don't hook in perfectly yet, but I'll patch those up over time, 99% are hooked in 😄

Enjoy! Have a great rest of your Sunday!

Eval into comments, more tools for remote REPLs, fixes and updates!

28 Jan 17:19
0aa1e8f
Compare
Choose a tag to compare

A few things in this update! I hope you enjoy and find them useful! And hopefully I've fixed some bugs you didn't know existed, but will now never encounter 🎉

  • Add a failsafe for when newlines sneak through into the log without being split into new lines, so actual raw newline characters (which I should catch and split into multiple lines in the nvim buf) can never break Conjure. You'll see them as if they ever sneak past. If you see one, please let me know how you did it!
  • Use keepalt when opening log windows, fixes #163, so you can use C-^ to hop between your buffers without Conjure's log getting in the way.
  • Add path-subs config (see :h conjure) which fixes #164 and allows you to substitute parts of your paths using Lua patterns, which allows you to go to definition or eval files in remote REPLs on other machines or in Docker containers a little easier. This is a tool to be used alongside the relative root config that already exists.
  • Added eval comment mappings to eval the current form, root form or word under your cursor and insert the result as a comment after the current form. Fixes #160. So now you can insert results into your file easily as examples that you can commit and share! Defaults to <prefix>ece/ecr/ecw.
  • Merge #167 which documents a weird interaction with the Fennel over stdio client and interesting readline configuration. Hopefully I'll have a better solution for weird readline config in the future! Maybe disabling readline for stdio REPLs through environment variables?
  • Update Fennel and Aniseed, just newer compiler version really.

And that's all for this one! I hope you enjoy! It's a slightly (by one day) belated birthday present from me to you 😄

Aniseed updates + autocompletion and various bug fixes

16 Jan 13:58
94a55a4
Compare
Choose a tag to compare

Hello everyone! I hope your 2021 is off to a great start! Hopefully these changes bring further joy to the way you work and interact with your projects 😄

  • Updated Fennel + Aniseed
  • Fixed #159, hopefully for good! Although there's still some issues with Conjure + packer that are fixable #159 (comment)
  • Fixed #161, parsing out the correct symbol when testing the Clojure test under the cursor.
  • Added completion to Aniseed based Fennel development! So if you develop a plugin with Conjure and Aniseed you'll get completion of local defs, requireable modules, table keys and more! This integrates with omnicompletion by default and any other Conjure autocompletion out of the box, just like Clojure autocompletion. (deoplete support is built into Conjure but there's also things like coc-conjure)

asciicast

  • Synced the sponsors file, which is sadly shrinking 😭 (it's not a huge deal, I'm fine, but I'm MASSIVELY appreciative of people who sponsor me, you're bloody amazing and thank you so much. Nobody needs to sponsor me, but I love the fact that some of you do ❤️)
  • Exposed the nREPL connection internal state through the conn table, as requested by wubbalubbadubdub on Discord. So you can access things like Clojure nREPL message tables in flight with the following code now.
(module foo
  {require {s conjure.client.clojure.nrepl.state}})

(s.get :conn :state :msgs)

Not the largest update, but hopefully a welcome one! A few things fixed, a few things added, hopefully absolutely nothing broken 😄 enjoy!

Have a great weekend 🎉

Better client/filetype config and inline virtual text eval results

30 Dec 14:12
ae46046
Compare
Choose a tag to compare

Hello everyone! I hope you had a great Christmas (if you celebrate it) and have a wonderful New Year ahead of you (if you celebrate it). Regardless, I hope you're having a good week 😊

  • Merged #149 - improve the marked-form eval so you can provide the mark name as an argument. Thanks, @giodamelio!
  • Refactored how filetype to client configuration works #148, if you had config to disable clients or remap certain filetypes to different clients you'll have to update your config. It now looks like the following:
" This list configures which filetypes work with Conjure, by default it's all of the default clients.
" If you only use one client and you want to disable the rest, set this list to only contain the filetype you care about.
let g:conjure#filetypes = ["clojure", "janet"]

" And this is how you override a client to use a different one for a filetype.
let g:conjure#filetype#fennel = "conjure.client.fennel.stdio"

" See the text on this in :help conjure for more info!
  • Modified the school slightly to include a better warning message when you're missing fennel filetype support and removed the help example from the end since it won't work unless you have Conjure installed. This is because the helptags aren't generated in the school yet, I didn't think it was very useful anyway.
  • Added named nvim commands for every mapping #153, so you can list, filter and execute every Conjure action using whatever command listing plugin you have installed. You can also call these things from your own vim or lua functions.
  • Added inline eval results as virtual text! #112 there's more to do in #158 for the next release to make it smarter, but it's a good start I hope. Let me know what you think!
  • Renamed master -> main, just in case any of you were explicitly referencing the master branch for some reason.

And that's all for today! Have a good day! You're great and I appreciate you!

image

Fennel stdio, Racket fixes, features, updates!

21 Dec 15:37
078b058
Compare
Choose a tag to compare

Hello everyone! Happy Holidays! I've been sitting on these commits for a while so I thought I'd release it before I started experimenting with things like virtual text 👀

  • Strip #lang from Racket evals, it doesn't work in Racket REPLs, only files.
  • Updated Aniseed+Fennel which recompiled all of the Lua.
  • Fixed some documentation formatting.
  • Added @BerkleyTrue to the sponsors list! ❤️
  • Added more Racket documentation around configuring the command used to launch the REPL.
  • Fixed #143 where regular expressions containing parens confused Conjure's paren hunting.
  • Added the ability to totally switch off a client for a specific file type.
  • Added mappings to reset the log contents for #144
  • Added custom autocmds that Conjure emits when certain things happen (see the help text), so now you can trigger things post eval etc. Conjure has event hooks! #131
  • Added support for Fennel evaluations over stdio without Aniseed, so you can evaluate in a pure Fennel + Lua REPL! Start a Fennel REPL in your favorite Lua environment and voilla, interactive lispy Lua! (Fennel over stdio quickstart guide)

I hope you all have a great break from work, stay safe, remember to call your family and loved ones even if you can't physically be with them.

Update Aniseed, fix Neovim 0.5 support and more completion sources

17 Nov 18:40
bcdaf37
Compare
Choose a tag to compare

Hey everyone! A relatively small update because it fixes some issues users were encountering when using Conjure on Neovim 0.5 / nightly versions.

  • Update Aniseed to v3.11.0. This brings Fennel up to v0.7.0 too.
  • Merge #127, add some information about the compe-nvim Conjure completion source.

Until next time! I'm continuing to focus on stability and hidden improvements more than features, maybe that focus will shift some day soon, but I think focussing on careful small improvements is great for the longevity of the tool.

The main difference here is that Aniseed macros are now found from the correct root directory. So it's truly relative to your source dir now, not the dir above your source.

So if you were using macros and they suddenly stopped working, it's because I fixed a thing that was subtly wrong, you can probably just move your macros into the fnl directory and adjust your require-macros calls to be relative to that fnl directory accordingly.

What's that Racket?

01 Nov 13:06
a4c31e1
Compare
Choose a tag to compare

Hello Conjurers! I hope you've had a great weekend so far and that this release makes it ever so slightly better.

I've finally started to fulfill the promise of Conjure's language agnostic magic by adding another language as well as a huge amount of plumbing that will make it easier to add others.

image

Racket enters the fray! (quickstart wiki page)

We have Racket support! Think of it as in beta but released right now, so you can go ahead and use it but I may have to adjust it a fair bit as I get feedback from people who actually use Racket. I've made a best guess at an MVP and how you need it to behave, but I'd love to hear if it's not enough and what you'd need to make it a great replacement for whatever you currently use to interact with Racket.

asciicast

I've also refactored all of the nREPL code for the Clojure support out into a reusable module, so now we can implement clients on top of netrepl (Janet only really), nREPL (Clojure) and stdio (Racket) much faster than before. So much code reuse!

I did try to implement the Racket support over nREPL with Ogion but I encountered a few issues and didn't have access to xrepl which is basically essential.

By starting a Racket REPL as a sub-process of Neovim we get full access to xrepl which is fantastic. This has allowed me to make the Conjure support just magic enough that you can just open Racket files and start evaluating forms in their given context. The Racket REPL tooling is pretty great!

I've also hooked up K to documentation lookup, <prefix>ef to reload the module / file and autocompletion based on the syntax of Racket. It's not full completion right now, but it's a lot better than nothing.

I hope you enjoy! Please do let me know what you think in the Discord (which now has a #racket channel!), I can't wait to hear your feedback!

Correct docs, fix client filetype config and close the HUD on quit

17 Oct 11:05
0e63269
Compare
Choose a tag to compare

Hello! Thanks for checking in! Another week, another Conjure release 😄

  • Correct go to def mapping documentation.
  • Allow setting g:conjure#filetype_client before Conjure loads, you can now actually override Conjure's defaults and set your own filetype to client module mappings. This wasn't working correctly before so it wasn't allowing you to specify that you'd like to evaluate Clojure in markdown files, for example. This now works!
  • Attempted to address #121 (interplay between large output and folding), not 100% fixed although I did fix a very nearby bug by accident. All of this is kind of hard to hit so you probably won't ever notice, but I thought I'd bring it to your attention. See that thread for the interesting nREPL shenanigans that I've encountered while investigating it.
  • Add print_buffer_size nREPL configuration. See the Clojure + nREPL help for more information on that one.
  • Updated Aniseed to v3.9.0.
  • Close the HUD with the QuitPre autocmd, this should prevent the weird issue where trying to close the last window in a tab (thus, closing the tab) was prevented by the HUD being open. Now the HUD will close when you try to close other windows, which I think is okay behaviour.

That's all for now! Have a great rest of your weekend! Have a Corg for following along with release notes 🐶

image

v4.6.0

10 Oct 17:50
beddff1
Compare
Choose a tag to compare

Hello everyone! I'm back! I had a bit of a slow period on Conjure and Aniseed but I thought I'd finally get this release out and get back to faster / smaller releases again. I hope you enjoy!

  • Updated to Aniseed v3.8.0.
  • Refactored Janet support, netrepl is now it's own reusable module inside Conjure. The same will be done for Clojure and nREPL soon!
  • Turn off with_context by default for Clojure completion. It didn't add much but required a LOT of CPU in some circumstances. Yet another thing for the eventual tree-sitter golden hammer!
  • Improve log result folding, you can now configure the marker.
  • More sponsors in the sponsor list! @jkrasnay! <3
  • Wrap completion results consistently, fixes completion with some completion plugins. #118
  • Ensure we're in Neovim >0.4 before attempting to load. #114

A lot of the improvements and fixes ended up being in Aniseed but there's still a sizeable amount here. Now I can move onto my next todo items knowing that these improvements aren't sitting hidden away on the develop branch any more!

And with that, I'm off to cook dinner. Enjoy your weekends everyone!

image

Result folding, more sponsors, Aniseed+Fennel updates and stability improvements

20 Sep 09:18
a943141
Compare
Choose a tag to compare

Hello! Happy Sunday everyone! I hope you've had a wonderful relaxing weekend with a good week ahead of you. Here's yet another fairly small but hopefully helpful Conjure update to brighten your day a little more 😄

  • Wait for automatic REPL connections (the ones that happen passively as you try to eval things) to complete before trying to proceed since some very specific setups could hit race conditions that way.
  • Updated to the latest Aniseed+Fennel and rebuilt which is a sizeable change! Fennel is now self hosted and written in Fennel which is pretty cool. I was stuck on 0.4 since 0.5 wouldn't compile Aniseed but I've finally got past that roadblock so we're well on our way to 0.6 once that's on the Fennel GitHub!
  • Sponsors are now featured at the top of every log! If you really don't want this please let me know, I can't think of a way this could really be abused at all, but I'm totally open to changing my mind on that. I just wanted to find a way to thank you in a more prominent way, you're the people that help make this work possible so I think you should be thanked more often and obviously. Also, new sponsors! Thank you so much @nickcernis and @Aljendro!
  • Not a code change, but I sent out some Conjure stickers (although they're not super sticky 😢) to six (six!) different countries yesterday. How exciting! I hope I get to see photos of them in the wild 😊 if any sponsors would like some stickers please get in touch with your details and I'll get some posted. There's still quite a few left!
  • Add a timeout to Clojure session type checking. This means a hung nREPL session won't lock up all of Conjure's Clojure interactions (since lots of them try to check the session type first). So you'll sometimes (on initial connection to a fresh nREPL for example) see Timeout as the session type. This is okay, it's just a thing that makes the UI a little snappier and less hung up on things that are optional information anyway.
  • Result folding! You can now have results folded for you automatically by setting let g:conjure#log#fold#enabled = v:true. It'll fold anything greater or equal to 10 lines by default but you can override that with g:conjure#log#fold#lines. It's not enabled by default since it could be a pretty annoying change for some people.

And I think that's everything! Thanks for reading, subscribing to updates and sponsoring me. You're all amazing, have a great rest of your Sunday!

Ollie

(def pot (atom :cat))

image