Releases: Olical/aniseed
Documentation fixes and mutative merge
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!
inaniseed.core
. It's just likemerge
, but it mutates the first table instead of merging into a fresh table. Somerge
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
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'stime
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 ofaniseed.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
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 createmacros.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!
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
Hello! A fairly small update but hopefully a useful one for prospective Aniseed based plugin authors.
- Added
conjure.core
constantly
, just like Clojure'sconstantly
. 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
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
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 Aniseedmodule
macro, so now your module can depend on macros! - Add
odd?
andeven?
functions toaniseed.core
. - Support multiple key value pairs in
aniseed.core/assoc
, just like Clojure #7
Thank you for staying up to date! Have a pupper 🐶
Update Fennel, lock down defs, improve embed.sh
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+
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!
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.