conjure

Interactive evaluation for Neovim (Clojure, Fennel, Janet, Racket, Hy, MIT Scheme, Guile, Python and more!)

UNLICENSE License

Stars
1.7K

Bot releases are visible (Hide)

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

conjure - Auto REPL connect and minor quality of life improvements

Published by Olical about 4 years ago

Hello! I survived presenting at vimconf (Conversational Software Development: What, Why and How?) and can finally release some small improvements I've been sitting on for too long + some more things from yesterday.

I like to use the develop branch in anger at work for a day or two to make sure there's no obvious issues before I release which slows things down a little. Here's the changes!

  • The log wrapping option got a lot safer, you can pass falsy things to it now and it won't explode.
  • Don't load Conjure clients if you launch nvim in diff mode, this avoids the overhead of booting up and attempting connections when you're trying to fly through git conflict resolutions.
  • Link to the FAQ when Conjure's nREPL Clojure support encounters a weird environment that can't be identified as Clojure, ClojureScript or ClojureCLR.
  • Auto connect on eval and other actions when you don't have a connection for Janet and Clojure! This means you can just jump into a file, start your REPL then start evaluating code. Conjure will make a connection if it can / needs to.
  • Update the sponsors list (omg it keeps growing, you're all wonderful, thank you so much ❤️)
  • Improve port-file resolution for Clojure, it now checks the parents of the current file, then the current working directory and finally ~/.config/conjure. This means you can :cd to a directory containing a .nrepl-port file then open a file from a local library you're working on that's in another tree. Conjure will now successfully connect to the nREPL from your CWD!
  • Resolve the log buffer path fully before attempting to open a window, this ensures you don't see weird errors when performing evaluations, changing working directory and then running more. Before it would get into a weird state where it created a new log buffer under the new CWD. It'll reuse the original log buffer correctly now.
  • Make Clojure completion context optional (see the bottom of the Clojure help). I found this to be a source of heavy CPU slowdown on slower machines, so you can turn this off if you need to. I hope this will get massively faster (suddenly instant with low CPU) on the advent of tree-sitter.

And that's all for today! I hope you enjoy the changes and it works well for you! I hope the next update will be out quickly with a few more fixes 😄 enjoy!

Have a great rest of your week!

image

conjure - Fix .nrepl-port file hunting

Published by Olical about 4 years ago

Sadly I broke the search for .nrepl-port files above your nvim current working directory. I'd accidentally added a second function called resolve to the conjure.fs module that behaved in a similar way to the function it was shadowing, this meant .nrepl-port files worked fine in your current directory but suddenly broke if you tried connecting from elsewhere.

I've also updated the sponsors list, two new amazingly generous people have started sponsoring me ❤️ I can't thank you enough.

  • @orestis
  • @thiru

Hello! I hope you've had a wonderful weekend so far! I'm about to go out for a run in the sun so I thought I'd release the current fixes and improvements from the develop branch first. I hope you enjoy!

  • Use the syntaxcomplete#Complete omnifunc if the client isn't returning completions.
    • Janet and Fennel now have basic completion based on the syntax file.
    • It's hooked into omnicomplete seamlessly as well as all async completion frameworks that work with Conjure.
    • When you're in a Clojure buffer but you're not connected to an nREPL you'll also get syntax completion!
    • This is all configurable, see :helpg conjure#completion#omnifunc.
  • Updated the sponsor list, welcome @aleksandersumowski!
  • Sent out an update to all sponsors regarding sending of stickers 👀
  • Internal fixes around maintaining the filetype for async function calls across filetype boundaries. Basically fixed some edge cases where evaluating something then changing to another unsupported filetype could cause issues.
  • Worked out what's wrong with #111 (prompting for stdin for Clojure), haven't got a fix yet but it's understood now.
  • Tested on nREPL 0.8.0, working fine! Will add support for the new completion and info ops soon!
  • Improved a number of edge cases in the school, it should work consistently in any environment now 🤞
  • Attempting to not load the client if we're in diff mode (like while sorting through git conflicts) for thirut on Discord. I don't think it's quite there yet, but it might improve some user's workflows considerably. Will probably be polished off in the next patch.

And that's all from me! I still have so much on my todo list that I want to get out very soon, hopefully you'll be seeing these very soon!

image

Have a great rest of your Sunday! Get some rest, look after yourself, see you soon!

image

conjure - Multiple connections, more config, optimisations, refactoring

Published by Olical about 4 years ago

So much to cover! I couldn't release earlier and smaller really because the multiple connections required a LOT of coordinated refactoring, I hope you enjoy these changes and improvements!

  • Update Aniseed with a few small improvements.
  • Simplify how relative file root resolving works and disable it by default (you'll have to see :help conjure for more on this).
  • A huge amount of internal refactoring and tidying.
  • Support for multiple connections for any client based on any criteria such as your current working directory or the day of the week. It's entirely up to you! See :helpgrep ConjureClientState for more information.
  • Disabled advanced CLJS completion until it's fixed upstream (thanks, @freddy! #107).
  • Use test-vars over test for Clojure (thanks, @b-ryan! #106).
  • Optimise completion a little for HUGE lists.
  • README and doc tweaks.
  • Internal testing deps.edn cleanup by @penryu, thanks!
  • Allow toggling of line wrapping in the log and HUD (see :helpgrep conjure#log#wrap).

And I think that's everything worth mentioning! I have a LOT more on my todo list but hopefully I can release them a little more incrementally now this big multi-connection feature is out.

Have a wonderful weekend!

image

conjure - Relative file eval, Clojure result truncation, Janet file eval

Published by Olical over 4 years ago

Hello you wonderful evaluators, I hope you're having a great week! This update brings improvements to file evaluation across all clients with a sprinkling of new things in Clojure and Janet. I've also removed the temporary config system shims that were designed to help people migrate to the new (better!) system.

Onto the change log!

  • Added @markwoodhall to the sponsors list, thank you so very much! You may have a session named after you in a Clojure project! (a range of nREPL session UUIDs are allocated to each person, as well as a bunch of cat and dog breeds).
  • Refined the README layout a little, just trying to make it easier to skim. This will probably lead onto having an official website some time in the hopefully near future. The website will be the elevator pitch and docs, the README should be technical information. Eventually.
  • Improved Janet's :ConjureConnect, more arguments are optional in the way you'd expect, just throw a host or a port at it and it'll probably do the right thing. Before it wanted you to be overly specific which would confuse some people.
  • Resolve "eval file" paths relative to the Neovim current working directory (:helpgrep relative_file_root). This means you can evaluate a file from your local disk even if the runtime you're connected to is within a Docker container that's mounted the source into it under a different path. Basically working with source mounted inside docker containers should just work as if it was on your local file system. Older versions of Conjure used to have this but it was lost in the rewrite, finally it's back!
  • Remove some dead code around the old "print session type" mapping that I was only keeping around with a deprecation warning attached to it.
  • Remove old config system shims, hopefully everyone's moved their configuration over by this point 😄 unless they skipped a few versions, in which case, I'm sorry! Your best bet is checking out the release notes of v4.0.0, there's not much you need to do to upgrade.
  • Add truncation to Clojure results in response to #104. Now infinite or huge things won't destroy your connection if you accidentally print them. If you need to see the rest of the information you can adjust the configuration (:helpgrep print_options).
  • Improved Janet file evaluation so the results of evaluating the file are placed into your current REPL environment, this should be the primary way to load a file in preparation for working on it. It'll resolve imports relative to the file and allow you to access all private values. It's like pasting the file source into the REPL, but it's loaded directly from disk by Janet and resolves imports correctly.
  • Removed client specific debug flags, just the one g:conjure#debug is enough, I don't think the individual client debug flags were useful.

I'm not sure what's next on my radar yet, I obviously have a todo list growing off into the sunset but I may well just mull those over and work on some personal development (like building git in Clojure and maybe recording the process in a series of videos to show my Conjure usage and workflow).

I'd also love to have a go at integrating another few lisps to some degree such as Racket and Common Lisp (#97). So maybe those will be next up!

One more thing to consider: I'm thinking about getting shiny high quality stickers made of the logo and mascot to send out to people sponsoring me past a certain level (maybe cheaper stickers for those sponsoring me to a lesser degree and to hand out at conferences?). Thoughts? I may well rework the sponsorship levels too after reading some really interesting points in I Just Hit $100k/yr On GitHub Sponsors! 🎉❤️ (How I Did It).

Here's a kitten for reading this release. You rock.

image

Have a great week and subsequent weekend!

Ollie

conjure - Fix ConjureSchool

Published by Olical over 4 years ago

I accidentally broke :ConjureSchool when rewriting the configuration system and didn't notice until @markwoodhall brought it to my attention (thank you!).

I've fixed the issue (replaced some - with some _ 😬) and added a simple test that's run in CircleCI on each commit to prevent it from happening in the future.

School is back in session!

conjure - Config rework and introducing Lillian, the Conjure mascot!

Published by Olical over 4 years ago

Hello! Welcome to another Conjure update! So fresh, it's still warm 🔥 or maybe that's just the weather we've been having in the UK recently...

Summary

I've rewritten the configuration system (and documentation) to just use regular old VimL let g:conjure#debug = v:true, for example. I've also remapped b:conjure_context to b:conjure#context for consistency.

Also, say hi to the wonderful Lillian, designed and named by the amazingly talented MysticalScribbles!

image

This is a breaking change due to the fact that you'll need to update some of your config (if you have any). Hopefully it'll just get simpler! The biggest thing to be careful about is mappings became mapping and clients became filetype_client in a configuration context. You'll see these reflected in the documentation / help files.

Changes

  • Implemented a new configuration system that doesn't rely on any custom magic, this is inline with other tools and plugins. All you need is VimL and let, no need to worry about "oh is Conjure loaded yet? Do I use ConjureConfig or g:conjure_config?"
  • Deprecated ConjureConfig with warnings, the new system will try to use your existing configuration but will print warnings until you migrate.
  • Small documentation fixes.
  • Adding mentions for how you can tweak the HUD background colour (#101) and vim-jack-in.
  • A bunch of behind the scenes things that I'll be using for some future releases around getting "eval this file" working across different filesystems such as when you're evaluating within a remote server or Docker container. Something I had in older Conjure implementations but lost in the Fennel rewrite, I'm bringing it back! 🎉
  • Adding a mascot and tweaking the README appropriately 😄
  • Massively improved how "run the test under the cursor" works for Clojure + nREPL. Fixed a number of bugs that were kind of hard to stumble across.

Next up

The next chunk of work and release will hopefully be the following:

  • Evaluation of your current file across filesystems (same repo, different parent path in a different file system).
  • Automatic require of your Janet file as you switch buffers. This will be optional and an experiment, so if it doesn't work well I'll drop it. I'm hoping this will pave the way for similar mechanics in other languages that don't have handy (ns ...) forms like Clojure.

Until next time!

Stay safe, rest your brain, enjoy the remainder of the weekend. You're doing great 🎉

conjure - HUD close delay, ANSI colour codes, fixes, improvements, MASCOT!?

Published by Olical over 4 years ago

Hello! I hope your week is off to a good start! If not, I'm sure it'll get better and maybe this update will help, even if it's only by a tiny amount.

  • Added a link to my post on conversational software development to the readme, it explains a little bit of my ethos and driving factors.
  • Improved Clojure namespace extraction and add tests. It can now handle a few more meta data and documentation string edge cases. If you spot any namespaces that don't appear to get parsed out and automatically switch as you eval, let me know! (pro tip, you can set b:conjure_context in any buffer to override which namespace it uses for that buffer)
  • Updated Aniseed to v3.6.0 which brings a few improvements, most notably the ability to require macros from the module syntax.
  • Merge #99 which adds log.hud.passive-close-delay, set this to 1000 to enable a second of delay between when you move your cursor and the HUD closing. Thank you, @heHamsta!
  • Strip all ANSI escape codes from the log by default, turn this off with log.strip-ansi-escape-sequences-line-limit set to 0. Combine it with Olical/AnsiEsc to get ANSI terminal highlighting in the log buffer, to an extent. This fixes #53!
  • Add all of my GitHub sponsors to a list inside the code which I use to add super rare Clojure nREPL session pretty names. Where you would normally see a cat or dog breed, you may now see a wonderful sponsors name! I even added a make sponsors command to update this by scraping the HTML (obviously anticipating rapid change in sponsors 😬 I can hope!).
  • Fixed #100 (ONE HUNDRED! 🎉) where a debug call that wasn't even doing anything causes errors to appear if you switched to an unsupported filetype while things were added to the log in the background.
  • Commissioned a logo / mascot from a wonderful artist, I can't wait to share what she comes up with. I think it's going to be reaaaaaaly good and definitely laptop sticker worthy, a bit different to your normal tech stickers 🙂

Take care of yourself, you're doing great. Here's a pup for reading the pupdate.

image

conjure - []+{} evals and log window config

Published by Olical over 4 years ago

Happy Sunday to you all! Here's a floppy corgi 😄 🐶 today's release is fairly small but might come in really handy for some!

  • Added support for [] and {} pairs when evaluating forms, you can configure what pairs are considered with :ConjureConfig extract.form-pairs ..., it defaults to [["(" ")"] ["{" "}"] ["[" "]" true]].
  • Added a few more links to the wiki quickstart guides from the readme.
  • Display "no env" when Conjure can't determine the session type instead of "???". This can only really happen when you're connected to a shadow-cljs server that doesn't have a JavaScript environment connected yet so evaluations fail.
  • Add the log.botright? config option (false by default) that forces the log window to either open on the far right or bottom of the editor taking up the full height or width respectively. Enable with :ConjureConfig log.botright? true.
conjure - Janet lang support, update Fennel, better Clojure ns handling

Published by Olical over 4 years ago

Good morning, evening and everything in between! I hope you're having a great week and enjoying the weather wherever you may be. Today's pretty important because Conjure has support for three (three!) Lisps! My original vision of a tool that supports many languages is coming together!

Janet support has landed! You just have to start a spork/netrepl server and then open a .janet file. It'll connect automatically and away you go, you can evaluate forms as you would in any other language.

This paves the way for more languages such as Racket and eventually non-lisps when we get wide adoption of tree-sitter in Neovim. How exciting! Now for the full notes.

  • Add Janet support, let me know what you think, it's the first release of this client!
  • Fix Fennel and Clojure module / namespace patterns, the expression was slightly off.
  • Define Clojure namespaces we haven't seen before when you evaluate. This should avoid the "this namespaces doesn't exist" chicken and egg problem that prevents you from defining a namespace if it's not defined. It was kind of rare so you hopefully haven't encountered it anyway!
  • Improved Clojure namespace parsing, it can now handle all sorts of metadata symbols inside the ns form and still pick out your namespace name correctly. Let me know if you find a ns form it can't parse!
  • Updated Aniseed + Fennel, keeping up with Fennel's master branch with various improvements and fixes.

That's all for now! I hope these are welcome changes and you have a good rest of your week. I'll be starting my new job on Tuesday so my output might drop a little but I'll still continue to fix and improve Conjure into the future.

Here's to many more years of having conversations with your code!

Side note: I'm thinking about commissioning a cute hand drawn logo and mascot, possibly an animal in a little parenthesis covered wizard hat+robe or something. Anyone know anyone awesome that would like to do that?

conjure - Pretty session lists! 100% more dog and cat references!

Published by Olical over 4 years ago

Hello friends! Here's another Conjure update fresh out of my combined kitchen and living room!

  • Fixed the expertly reported #91 and #90 (thank you @adz5a and @FongHou!)
  • Deprecated the "session type" mapping and integrated the session type into the session list. (it'll show a warning if you use the old mapping thanks to @martinklepsch's prompt)
    You'll also see the session type every where a session is mentioned, such as when you switch, clone or create a session.
  • Replaced the ugly nREPL session UUIDs with dog and cat breeds. This makes them a lot cuter and human readable!
  • Removed my custom namespace switching code in favour of the :ns key in nREPL messages, should work a lot better!
  • Added the ability to entirely disable a mapping by setting it's config value to nil. If you have a mapping that conflicts with something else and you don't need it you can now get rid of it.
  • Fix test mappings in shadow-cljs that were broken while fixing other things. ClojureScript support whack-a-mole! 🎉

Enjoy! Have a great week!

conjure - Update Aniseed+Fennel, more shadow-cljs compatibility

Published by Olical over 4 years ago

Should have no noticeable effects for most users. I've updated Fennel in Aniseed to v0.4.0 (+ a patch that fixes something around macros) and then updated the dependency on Aniseed in here.

I've recompiled the project with the new Fennel and everything seems okay! I've also smoothed over some incompatibilities with shadow-cljs so everything should be working fine with that now.

Enjoy! Have a great weekend!

conjure - Fixes to the previous large update

Published by Olical over 4 years ago

v3.1.0 was pretty sizeable and as such didn't have as many eyes on all the changes I was making. This means the moment I published it a few issues were discovered that I really should have caught. Sorry about that!

This patch includes the following fixes:

  • "load file" is fixed, I accidentally turned it into a no-op while trying to improve it for ClojureScript. It now works as expected and works better in CLJS land.
  • Errors in some very specific setups around reading environment variables should be gone since I'm carefully checking if they're defined now.
  • Merged a PR to fix a typo in the README.

So not very much, but the env var error and lack of load file were glaring issues. Enjoy! 🐶 🎉

conjure - Features! Fixes! Magic!

Published by Olical over 4 years ago

These release notes are correct but you should use v3.1.1 instead since it contains a few fixes for this release.

This important pupdate is sponsored by my mum's puppy, Willow.

image

Okay, hold onto your hats, there's a lot to get through!

  • Added "eval and replace form", assigned to <localleader>e! by default. You can place your cursor on a form, press that and it'll be replaced by the result of the evaluation!
  • All eval results are now copied into a register (c by default, but can be configured), so you can paste them into your buffer without having to yank them from your log! This is like "eval and replace" but a little more flexible.
  • Improved HUD display logic, it now checks to see if the last line in the buffer is visible in one of the windows. Subtle, but nice.
  • More help file text and improvements.
  • Added an interactive tutorial, start it with :ConjureSchool to learn how to interact with Conjure.
  • Add Clojure commands for subscribing to and unsubscribing from all non-eval thread stdout.
  • Check in ~/.config/conjure for .nrepl-port files too, this is a good place to put a standard fallback port that you want to use when no .nrepl-port file is found within your current directory.
  • Add a script (documented in the readme) that allows you to trial :ConjureSchool without having Conjure installed! Just paste the one liner, run it, and you're in the school! Simply requires curl and an up to date nvim.
  • Internal improvements to nREPL message processing, it's more batchy now, shouldn't really see a difference but it should run a little smoother.
  • Prefix Clojure doc lookup with an in-ns call. Bug fix.
  • Add auto-require, so if you open a file that isn't loaded it'll be requried for you! No more trying to eval only to see an error because you forgot to load it. You can turn this off!
  • Better session type detection and printing.
  • Fixed ClojureScript completion entirely, it's great now!

I hope you enjoy this update! 🎉

conjure - Rewritten, more languages, nREPL, ClojureScript completion, oh my!

Published by Olical over 4 years ago

So I accidentally invented Aniseed, a way to write Neovim plugins interactively in a Lisp that looks just like Clojure. Then I slipped and accidentally rewrote Conjure using this system which also happens to support more than one language now.

So, the new Conjure, what does it mean:

  • Replaced prepl with nREPL since it has complete ecosystem adoption and brilliant ClojureScript support. You get autocompletion and shadow-cljs works perfectly now!
  • No extra JVM required, just start your program with an nREPL embedded within it, open Neovim, evaluate things immediately. Everything runs within Neovim itself under the embedded LuaJIT.
  • No JVM required to run Conjure, so no bin/compile step to install the plugin!
  • Evaluate more than Clojure, it also supports Fennel with Aniseed. It'll support Racket, Janet and other Lisps in the near future! Eventually it'll allow you to evaluate things that aren't even Lisps!
  • A smarter, smoother, log buffer that works more like a regular terminal you can edit.
  • A heads up display (HUD) that pops up as and when it's required and hides as you continue to work. It's a little floating window that tries to stay out of the way.
  • All of the previous autocompletion tools have been updated to work with the new version, you'll just need to update them 🎉 (unless you use deoplete, that's been updated with Conjure)
  • Eval at mark no longer flickers the screen!
  • Better go to definition with the power of nREPL and CIDER! (even works in CLJS!)
  • Conjure's Clojure support will now benefit from the future developments of nREPL and CIDER.
  • Support for multiple nREPL sessions, so you can hop between your ClojureScript piggiebacked session, your web server and your JVM evaluations.
  • You can interrupt your Clojure evaluations!
  • It works with babashka's nREPL server!

Okay, I can't think of any more right now, but basically it's better in every single way. I hope you'll agree!

Once you've updated you can use :help conjure to learn all about the mappings and configuration available in the new version. :help conjure-client-clojure-nrepl will tell you all about the Clojure specific configuration and mappings.

For those of you that just need prepl support, I'll be providing that with another Clojure client you can opt into at a later date. It won't be as powerful as this new nREPL version, but it'll probably cater to the needs of some of you.

I hope you enjoy, it's been a LOT of work to get to this point. I mean like, years of implementations and experiments and then months of work to get this version production ready. I just hope it was all worth it 😅

Let me know if you have any feedback or issues, I'd love to hear your thoughts.

May the 4th be with you 🧙

(if you want to share the good news, please give my twoot a re-twoot!)

conjure - Completions hook, flush after eval and internal refactoring

Published by Olical almost 5 years ago

This has been sitting on develop for quite a long time now! The only noticeable change is that Conjure will flush upon eval now, that means you can use (print "foo") and see "foo" printed to *out* right away. Before this you would have to wait until a newline was printed or (flush) was called. This was only ever a problem in JVM Clojure, not ClojureScript, that already flushes automatically.

I've also added a :completions hook that allows you to map, filter or sort the completions as they're returned from Conjure before your Neovim completion plugin gets hold of them. This can be useful to filter out keys you don't care about.

There's been a number of internal source files that have been moved around to tidy up the top level directory, although that shouldn't be noticeable by any users.

conjure - Fix evaluating a mark in another buffer

Published by Olical almost 5 years ago

If you evaluate a mark in another buffer it would be evaluated under the wrong namespace.

If you set a mark F in namespace foo then evaluate it from namespace bar with <localleader>emF it'd be evaluated with a namespace of foo. That's been corrected so it'll evaluate with bar now, apologies for the mistake!

I hope you have a great weekend! 😄

conjure - Evaluate a form at a mark

Published by Olical almost 5 years ago

After a fairly length discussion and a period of hammock time, I'm pleased to announce evaluation of a form at a mark. This means you can set a regular mark in Neovim (mf / mF etc) then ask Conjure to evaluate that mark from anywhere in the buffer! If the mark is upper case you can even evaluate forms in different files!

When invoking this new command (:ConjureEvalFormAtMark or <localleader>em{KEY} by default), you'll see Conjure very briefly jump to the code in question, evaluate it and then jump back.

The cool thing about marks is that their line number and character position will stay correct even as you add or delete lines. This allows you to mark a form and have it work even after you've moved lines around.

asciicast

In future releases after I've done a bit of internal refactoring you won't even see the buffer jump around, it'll all be done in the background without moving your cursor.

Let me know what you think in #conjure on ClojuriansSlack or @OliverCaldwell on twitter. I hope you find this new feature useful.

conjure - Hooks, better path filtering, removal of superseded config

Published by Olical about 5 years ago

  • Added hooks! Check out how to use them in the README, they let you configure things and "hook" Conjure into other tools like REBL. An example can be found in the README's hook section.
  • Breaking: Removed the :refresh config from .conjure.edn, you can now use the :refresh hook to configure the exact same thing.
  • Added :dirs config, an optional Clojure set that limits connections to specific directories. This should come in handy for monorepos etc.
  • Added :extensions config, an optional set that defaults to #{"clj" "cljc" "edn"} for Clojure and #{"cljs" "cljc" "edn"} for ClojureScript. This can be used to add or remove certain file extensions for your connections.
  • Added :exclude-path? config, an optional function that returns true or false for each file path you might want to consider for evaluation for a connection. This can be used for custom filtering of paths for connections when the previous two don't quite cut it.
  • Breaking: Removed the :expr config since it's been superseded by the three previous tools. If you'd like to just use regex filtering you can do that via :exclude-path?.
  • Tweaked some launch options for Conjure's internal JVM to prevent warnings with JDK 13.

I hope you find these changes useful!

image