Neovim configuration and plugins in Fennel (Lisp compiled to Lua)
UNLICENSE License
Bot releases are hidden (Show)
Published by Olical over 3 years ago
Hello Fennel hackers! I hope the sky is as blue where you are as it is outside my window 🌞
\\
etc, that should be okay now!string.gsub
to correct rare backslash paths to forward slash delimited on Windows. One Neovim function was returning backslashes on Windows which caused mixed separator paths on Windows and broke aniseed.env
for those users. Thanks @kethku!Published by Olical over 3 years ago
autoload
for aniseed.env
.aniseed.env
unless absolutely required, speeds up startup of dotfiles.*file*
to every module so now you can get a relative path to the Fennel file you're currently evaluating. You can use this to work out various relative paths.aniseed.env
Lua output directory.aniseed.dotfiles
module, it's been deprecated for a long time now. Please use aniseed.env
.Published by Olical over 3 years ago
aniseed.env
if it can't require your init
module yet (i.e. you've turned on aniseed.env
but haven't written your init yet)aniseed.core/str
, just like Clojure! Thanks!autoload
, a drop in replacement for require
that only works for table modules but will load them when they are used not when required. I've replaced all requires with autoload in all of my plugins, I recommend you trying the same 😄 can speed up your initial load time in some cases.Published by Olical over 3 years ago
A routine update of Fennel which brings in some nice new macros such as .?
, exciting! A nil safe lookup!
#32 was merged which fixed setting g:aniseed#env
to a map (as opposed to v:true
). I then refactored that a little so the defaulting of the options is handled by Fennel / Lua instead of Vim Script.
Turns out you can't compare a Vim map to any other data type, including booleans, who knew! {} == v:true
throws an error, fun.
Published by Olical over 3 years ago
Hello wonderful people! I hope you enjoy these small fixes and improvements.
make fennel
instead of make build
. I think this changed in the Fennel project at some point and I didn't catch it until now. Probably didn't impact anyone in any way, but still! Fixed!g:aniseed#env
option, so you don't need to require and call a function in Aniseed anymore! That means you don't need to worry if Aniseed is installed or not etc, should make things a lot easier to hook into. Set it to v:true
to enable loading of ~/.config/nvim/fnl/init.fnl
and set it to a map of options to enable it with extra options (like you used to pass to the function.(module ...)
macro against some edge cases, thank you for pointing it out, Tae! #30Hopefully the g:aniseed#env
option allows people to use Aniseed without running into weird issues with some more modern plugin managers like packer. Only time will tell, but I think it's an improvement regardless.
I also added some small examples / docs for aniseed.env
to the README and removed the link to the gitter and replaced it with a link to Conjure's discord because that place is ❤️
I hope you have a great Sunday!
Published by Olical over 3 years ago
Just keeping up to date with Fennel mainline and handling any issues that arise ASAP 😄
Published by Olical almost 4 years ago
Hello everyone! I hope your 2021 is off to a great start! Here's some Aniseed updates that have been sitting on develop
, I'm happy that they're stable so it's time for a tag 😄
master
branch, so we're always on the bleeding edge. This way I can deal with API changes early before it becomes too big of a deal and you get compiler improvements as quickly as possible!32On the off chance that you run into a missing conjure.aniseed.macros
error, it's to do with this packer / runtimepath issue. It only seems to happen to people running Neovim built from master
with packer as their plugin manager.
@BerkeleyTrue worked it out though! So hopefully his comment helps you too! https://github.com/Olical/conjure/issues/159#issuecomment-757384128
Published by Olical almost 4 years ago
Hello everyone! I hope these changes find you well 😄
anissed.env
.Have a great day!
Published by Olical almost 4 years ago
master
as of a week or so ago. The whole path management situation is a lot cleaner now because of this tidy / fix up.aniseed.env
), so now there's some more tools and options in the aniseed.env
:help aniseed
text around doing less work if you know you don't have to. Namely, not compiling or even trying to check for things to compile if you know you haven't changed any source files.Published by Olical almost 4 years ago
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.
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.Not very much, but all steps in the right direction I hope. Enjoy! I hope you have a great week.
Published by Olical about 4 years ago
Hello! Good morning! Happy weekend! Here's a few Aniseed updates to keep you on your toes 😄
(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.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!
Published by Olical about 4 years ago
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 (https://github.com/bakpakin/Fennel/issues/331).
Without further ado, here's the full changelist!
seed.sh
script to provide some slightly nicer output and renaming of files on your behalf. Thanks @tami5 for the PR (#14)!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.*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.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!
Published by Olical about 4 years ago
Hey, it's been a while but here's a fresh drop of Aniseed 😄
mitch
on discord for prompting me to get this working and showing me your neat syntax)(augroup :clojure
(autocmd "BufWritePost *.clj :silent Require"))
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!
Published by Olical about 4 years ago
Hello! A fairly small update but hopefully a useful one for prospective Aniseed based plugin authors.
conjure.core
constantly
, just like Clojure's constantly
. See the help for more info.clojure.string
join
a little bit more efficient.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 👀
Published by Olical over 4 years ago
Just a routine version bump and test alongside some small Makefile
changes. Have a great week!
Published by Olical over 4 years ago
Hello! I hope you're having a good Saturday so far (if you're reading this as it goes out, that is!)
0.4.1
.require-macro
in the Aniseed module
macro, so now your module can depend on macros!odd?
and even?
functions to aniseed.core
.aniseed.core/assoc
, just like Clojure #7Thank you for staying up to date! Have a pupper 🐶
Published by Olical over 4 years ago
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!
Published by Olical over 4 years ago
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.
Published by Olical over 4 years ago
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.