Skip to content

Releases: Olical/conjure

Guile, Hy, vim-repeat fixes, better HUD positioning and more!

27 Feb 15:18
4dc7c74
Compare
Choose a tag to compare

Hello all! A bunch of things in this release! I hope you're having a good weekend so far and this just improves things a little more 🙂

I've also whipped up a YouTube video showing how I work with Conjure, I thought some of you may find that interesting: How I use Conjure and Neovim to interact with Clojure (and more!)

  • Merge #174 - attempting to disable custom readline config that conflicts with various stdio clients, that doesn't seem to do the trick yet, but this is laying groundwork for a good fix soon! Until then, make sure you don't have any special global readline config in your REPL if you want to use it with a Conjure stdio client.
  • Merge #175 - adds support for Hy over stdio! (quickstart)
  • Merge #178 - adds support for Guile over a socket file! (quickstart)
  • Fixed vim-repeat's escaping for certain user mapping setups. Should be safe no matter what your mappings are now. My apologies to anyone this impacted!
  • Support dotted filetypes, so now scheme.guile will match the scheme or guile filetypes. #177
  • Added config and improvements to make HUD positioning far smarter and more flexible. So now you can have the HUD appear at the bottom, taking up the full width, and moving to the top if your cursor is too low on the screen. Hooray! See #176 for initial discussion and example config.
  • Added types to Aniseed Fennel omnicompletion, so now you know what's a function and what's a table. Handy for me while I work on Conjure itself!

I think that's everything! I hope these are useful and make things a tiny bit smoother. Enjoy! Have a great rest of your weekend!

Fix eval at mark, more vim-repeat!

10 Feb 22:07
88e7865
Compare
Choose a tag to compare

Hey! So I'm reaaaly sorry for breaking "eval at mark" when I introduced vim-repeat support (#171) in the latest version (thanks for pointing it out @arthropodSeven! #172).

This patch fixes that issue and hooks up "eval at mark" to vim-repeat (if you have it installed) correctly. So you can use <prefix>emF or whatever then . to repeat that same mark eval! Handy!

Keep those reports flowing if I break things, I hope it's extremely rare (it seems to be) but I do appreciate reports as and when I slip up.

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