Skip to content

Releases: Olical/aniseed

Documentation fixes and mutative merge

26 Oct 20:35
5154fd5
Compare
Choose a tag to compare

Hello! A small update for you all, but I'm going to keep them coming. Little and often, continuous improvements with low risk of breakage is the way to go 😄 mostly just tagging in preparation for an impending Conjure release.

  • Fixed some documentation issues, notably by merging #22.
  • Added and documented merge! in aniseed.core. It's just like merge, but it mutates the first table instead of merging into a fresh table. So merge is near enough a shallow clone which doesn't alter the base table, merge! does mutate the base table.
  • Updated Fennel a few times, we're ahead of the curve for Fennel 6.0.1 I think. Keeping us on the tip of master to benefit from a few LuaJIT related fixes. I'm a canary for the Fennel devs so I've been keeping them in the loop with issues I've run into, I think the tight feedback loop helps both of us. I hope!

Not very much, but all steps in the right direction I hope. Enjoy! I hope you have a great week.

Repalce dotfiles with env, add timing macro and update Fennel

17 Oct 10:51
ee365bf
Compare
Choose a tag to compare

Hello! Good morning! Happy weekend! Here's a few Aniseed updates to keep you on your toes 😄

  • Merged #21 which fixes a documentation typo, thanks @davidwilemski!
  • Updated Fennel, we're using a patched branch that fixes some rare errors under LuaJIT, shouldn't notice any changes, I'm just keeping us at the tip of the development.
  • Added a (time ...) macro that you can access from within any Aniseed project or code. It'll time your code and print the results in milliseconds just like Clojure's time macro! Great for working out how long chunks of your code are taking during development.
  • After a discussion in #19 I've deprecated (with a warning) aniseed.dotfiles in favour of aniseed.env which is a little more flexible and well thought out. There's migration instructions under :h aniseed-dotfiles and :h aniseed-env. It's near enough the same apart from the fact that you can now specify which module you want to be your entry point and where it's stored (relative to your Neovim configuration directory). This means you could have ~/.config/nvim/init.fnl as your configuration entrypoint 👀

So a fairly small update but hopefully useful! I'll leave aniseed.dotfiles around with the printed warning at startup for a while until I'm confident everyone's moved across and any issues are worked out. Sorry for the work this incurs but I promise it's super small.

Just replace this:

lua require('aniseed.dotfiles')

With this:

lua require('aniseed.env').init({ module = 'dotfiles.init' })

Or, if you rename your ~/.config/nvim/fnl/dotfiles/init.fnl to ~/.config/nvim/fnl/init.fnl you can just use the default call like so:

lua require('aniseed.env').init()

Again, see :h aniseed-dotfiles and :h aniseed-env for more information.

I hope you enjoy! Have a great rest of your Saturday and weekend!

Fennel updates, macro and seed.sh improvements

10 Oct 17:37
f3d0004
Compare
Choose a tag to compare

Hey there! Quite a lot went into this release and it too longer than I expected because there were some Fennel things to get fixed before it went out for general release (bakpakin/Fennel#331).

Without further ado, here's the full changelist!

  • Updates to the seed.sh script to provide some slightly nicer output and renaming of files on your behalf. Thanks @tami5 for the PR (#14)!
  • Return values from fn-bridge by default, it was confusing not having this as the default. Now you can opt out of returning the value from a bridge-fn rather than opting in.
  • Update to Fennel 0.6.0 + a few extra commits to fix a few things. This is more like 0.6.1-alpha. Hopefully some more subtle bugs fixes and improvements have slid in!
  • Ensure a bad require doesn't kill the module. Before, if you tried to require something that didn't exist you'd get a horrible large error and then that module was unusable until you either cleaned it up yourself or restarted Neovim. You can now "unrequire" modules by deleting them from the definition and a module will survive a bad module require.
  • Add *module* and *module-name* as locals you can access in your module source code. This allows you to inspect your actual module table as well as the name of the module you're currently evaluating within. This can be useful for referring to the current namespace from VimL function bridges.
  • Ignore paths that end with macros.fnl in glob compiling, this means you can create macros.fnl files in your dotfiles and plugins without having Aniseed attempt to compile them to Lua (that's not possible). This should make it easier to use macros in your projects!

And that's all! There were a bunch more commits but I think this is all of the highlights, I hope you find these changes useful and I hope I can bring you more soon. Have a great weekend!

Macros in your dotfiles! Updated Fennel!

16 Sep 21:34
e2eef63
Compare
Choose a tag to compare

Hey, it's been a while but here's a fresh drop of Aniseed 😄

  • Your Neovim config directory is now on the Fennel search path when you're using Aniseed for your dotfiles. This means you can write macros for your dotfiles! That means you can write things like this: (thanks mitch on discord for prompting me to get this working and showing me your neat syntax)
(augroup :clojure
  (autocmd "BufWritePost *.clj :silent Require"))
  • Updated Fennel to 0.5.0, although I think 0.6.0 is just around the corner 🎉 this update was a fairly difficult one to get working though since it's now self hosted (Fennel is written in Fennel!). Let me know if you encounter any issues, there's definitely some differences in error output, I may have to tweak things to get stuff to play well together over time.
  • Some internal tests started failing intermittently, I've started sorted the data so that the tests pass consistently.

And that's it, a few things but a fair bit of tinkering to get them to work properly. I hope it all works great for you!

Add `constantly`, speed up `str/join` and a plugin template script

30 Aug 15:13
a102f97
Compare
Choose a tag to compare

Hello! A fairly small update but hopefully a useful one for prospective Aniseed based plugin authors.

  • Added conjure.core constantly, just like Clojure's constantly. See the help for more info.
  • Made clojure.string join a little bit more efficient.
  • Added script/seed.sh (documented in the help and readme) which sets up a blank example Aniseed plugin in your current directory.

This blank project includes a sample source file, way of automatically loading it on plugin load, test and makefile to tie it all together. I hope it's useful! It should help you get up and running developing plugins far quicker! It's exactly how I structure my projects but stripped back to the bare minimum so as not to contain tooooo many assumptions.

Enjoy! Now back to planning / building my VimConf Live 2020 talk 👀

Update Fennel to 0.4.2

14 Jul 08:29
bf13028
Compare
Choose a tag to compare

Just a routine version bump and test alongside some small Makefile changes. Have a great week!

Fennel update, require-macro in module, more aniseed.core fns

13 Jun 13:28
4f61a5f
Compare
Choose a tag to compare

Hello! I hope you're having a good Saturday so far (if you're reading this as it goes out, that is!)

  • Bumped the Fennel dependency to 0.4.1.
  • Added support for require-macro in the Aniseed module macro, so now your module can depend on macros!
  • Add odd? and even? functions to aniseed.core.
  • Support multiple key value pairs in aniseed.core/assoc, just like Clojure #7

Thank you for staying up to date! Have a pupper 🐶

image

Update Fennel, lock down defs, improve embed.sh

21 May 10:14
8d00865
Compare
Choose a tag to compare

Fairly minor, I'm just keeping Fennel up to date with their master branch right now since it's getting quite a few fixes merged that look nice to me.

I also realised that mutating a def doesn't make any sense and causes inconsistencies / bugs. So now you can't do this because it didn't work in the first place, now it'll tell you with an error:

(def xyz true)
(set xyz false)

That would have desynced the value with what was exposed by the module, bad times. Now it just prevents you from doing it. If you want state at the module level you can mutate simply use a table.

(def xyz {:on? true})
(set xyz.on? false)

I've also improved embed.sh so you can use it to embed any dependency now, not just Aniseed itself!

Updated Fennel to v0.4.0+

16 May 10:51
55e47cb
Compare
Choose a tag to compare

I've updated Fennel and added some string trimming functions to aniseed.string. I've also fixed Aniseed's test output which is helpful, it was suppressing some stdout before which was kind of annoying.

Conjuring up a storm and adding help!

03 May 15:20
da35aed
Compare
Choose a tag to compare

This is a pretty big release, I've finally deleted all of the internal mapping code, Aniseed no longer comes with key mappings to run things. Instead you should install Conjure and use that, it's a fantastic experience compare to what used to be here.

You may still have to use the develop branch of Conjure if I haven't release it yet. I'm going to release it tomorrow, 04/05/2020 since it's also Star Wars day.

Also, :help aniseed will now provide ALL of the documentation you could possibly need including documentation for every single function and macro exposed by Aniseed. Enjoy! 🎉 (closes #3)

Includes a lot of smaller changes and tweaks that I won't bother to mention right now, they're all related to things I added or fixed while working on Conjure.